wxpython:wx.listitemがwx.listctrlを導き出すのは古いクラスのみを返します
質問
派生クラス、つまり wx.ListItem
と wx.ListCtrl
. 。私は成功しました wx.ListItem
として MediaItem
, 、コードが終了していませんが、ポイントが得られます。
class MediaItem(wx.ListItem):
def __init__ (self, fullname):
wx.ListItem.__init__(self)
self.fullname = fullname
self.filename = os.path.basename(fullname)
# snap...
def getFullname(self):
return self.fullname
wx.ListCtrl
パイソンアヒルの哲学のために喜んでそれを受け入れます。しかし、問題は、メソッドを使用することです wx.ListCtrl.GetItem(index)
返品a ListItem
, 、 いいえ MediaItem
. 。 Pythonは不平を言った wx.ListItem
属性がない getFullname
.
オブジェクトを鋳造することは、ソリューションにアプローチする間違った方法のようです。これはおそらく問題とは何の関係もありませんが、私も問題のあるようなものを貼り付けます。
filename = self.filelist.GetItem(event.GetIndex()).getFullname()
どこ self.filelist
aです wx.ListCtrl
.
解決
私はただそれを吸い上げて、最適ではないマニュアルブックキーピングに回帰する必要があると思います。上品に終わったとき、それは大したことではありませんが、私はwxpythonに高い希望を持っていました。
おそらく(私が検索して収集したものから)問題は、WXPythonクラスのベースのプロキシの性質に関するものです。それらが純粋なPythonで書かれているか、私がC ++でコーディングした場合、これはうまくいったでしょう。しかし今、オブジェクトの多型は設計の制限のために失敗します:ネイティブC ++ WXクラスは何も得られません wx.ListItem
そして、それは確かにaを返すだけです wx.ListItem
wxpythonに戻ります。
したがって、私の「解決策」は導き出すことです wx.ListCtrl
それ以外の wx.ListItem
, 、必要な情報を保存し、そこでの外観を制御します。