0

wxPython ツールキットに問題があります。wx.GridSizer オブジェクトを使用して、ステータス情報を表示するグリッドを配置しています。このグリッドを更新する必要があるため、いくつかの方法を考え出しました。私が好むのは、更新が必要なテキストを単純に更新/更新することです。そのため、wxStaticText オブジェクトをサイザーから切り離し、新しい wxStaticText オブジェクトで上書きして、オブジェクトを以前のインデックスでサイザーに挿入し直すことができます。

より良い方法は、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 が、親クラスのメソッド (継承され、サブクラス化された) Insert を正常に呼び出すことができることが証明されています。

では、Replace メソッドを同様の方法で呼び出せないのはなぜでしょうか。

4

1 に答える 1

0

wx.StaticText.SetLabel("New label")テキストの更新に使用できない理由はありますか?

于 2009-07-18T08:26:23.240 に答える