3

派生クラス、つまり。に小さな問題があり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)が返されることです。Pythonは、属性がないことについて不平を言いました。ListItemMediaItemwx.ListItemgetFullname

オブジェクトをキャストすることは、ソリューションにアプローチするための間違った方法のようです。これはおそらく問題とは関係ありませんが、問題のある行もそのまま貼り付けます。

filename = self.filelist.GetItem(event.GetIndex()).getFullname()

はどこself.filelistにありますかwx.ListCtrl

4

1 に答える 1

2

私はそれを吸い上げて、次善の手動簿記に回帰するべきだと思います。上品に行うと、大したことではありませんが、wxPythonに大きな期待を寄せていました。

おそらく(私が検索して収集したものから)問題はwxPythonクラスベースのプロキシの性質にあります。それらが純粋なPythonで書かれていた場合、または私がC ++でコーディングした場合、これはうまく機能していました。しかし、現在、オブジェクトのポリモーフィズムは、設計上の制限のために失敗します。ネイティブC ++ wxクラスは、a以外は何も取得せず、wx.ListItem確かwx.ListItemにwxPythonに戻るだけです。

したがって、私の「解決策」は、代わ​​りに派生wx.ListCtrlwx.ListItem、必要な情報を保存し、そこに外観を制御することです。

于 2010-07-01T13:22:21.943 に答える