私はwxPythonツールキットに問題があります。私はいくつかのステータス情報を表示するグリッドを配置するwx.GridSizerオブジェクトを使用しています。私はこのグリッドを更新する必要があるので、私はそれを行ういくつかの異なる方法を思いついた。私が好むものは、更新が必要なテキストを単にリフレッシュ/更新することです。したがって、wxStaticTextオブジェクトをサイザーから切り離して、新しいwxStaticTextオブジェクトで上書きし、そのオブジェクトを以前のインデックスのサイザーに挿入することができます。wxPythonのsizer wxGridSizerの親クラスメソッドが異常にアクセスできない
より良い方法は、wxGridSizer、wxSizerの親クラスを使用することです。このクラスには 'Replace'というメソッドがあり、ウィジェット内のアイテムを取り出して戻すことができます。より滑らかないいえ?このメソッドを使用しようとすると非常に奇妙なエラーが発生します。コードに続いてエラーがあります。
self.info_sizer.Replace(self.project_value, wx.StaticText(self, wx.ID_ANY, project))
self.info_sizer.Replace(self.project_value, wx.StaticText(self, wx.ID_ANY, project))
AttributeError: 'GridSizer' object has no attribute 'Replace'
突然、置換はオプションではありません。以前に言及したInsertメソッドは、sizerの親クラスwxSizerのメソッドであることに注意してください。したがって、wxGridSizerを使用しているsizer imが親クラスのメソッド(継承された、サブクラス化された)Insertを正常に呼び出すことができることが証明されています。
なぜ、私は同様の方法でReplaceメソッドを呼びますか?
私は解決のためにそのクラスを見ていたと思いました。私はその方法を逃したに違いない。最近、これで過負荷になってしまった。 ありがとうございます! –
これはすばらしい解決策ですが、親クラスのメソッドにアクセスできないことを知っていればなおさらです。不思議なことに、私が間違ったことをしない限り、私にとっては非常に遅かったです。 –
wx.GridSizerをサブクラス化しましたか? http://www.wxpython.org/docs/api/wx.Sizer-class.htmlには次のようなコメントがあります: "wxPythonでカスタムsizerクラスを作成する場合は、wx.PySizerからクラスを派生させる必要があります。さまざまな仮想メソッドのためのPython対応の機能を得るために」 –