wxpython:wx.listitemがwx.listctrlを導き出すのは古いクラスのみを返します

StackOverflow https://stackoverflow.com/questions/3152153

  •  01-10-2019
  •  | 
  •  

質問

派生クラス、つまり wx.ListItemwx.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, 、必要な情報を保存し、そこでの外観を制御します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top