簡體   English   中英

WxPython:派生wx.ListItem但wx.ListCtrl只返回舊類

[英]WxPython: deriving wx.ListItem but wx.ListCtrl only returns old class

我有與派生類,即一個小問題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很高興地接受了因為Pythons duck哲學。 但現在問題是使用方法wx.ListCtrl.GetItem(index)返回ListItem ,而不是MediaItem Python抱怨wx.ListItem沒有屬性getFullname

轉換對象似乎是解決方案的錯誤方法。 這可能與問題無關,但我也按原樣粘貼了違規行:

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

self.filelist是一個wx.ListCtrl

我想我應該把它搞砸,並回歸到次優的手工簿記。 如果做得很有品味,這不是什么大問題,但我對wxPython抱有更高的期望。

據說(從我搜索和收集的內容)問題是wxPython類庫的代理性質。 如果他們用純Python編寫,或者我用C ++編寫,這本來就可以。 但是現在由於設計的限制,對象的多態性失敗了:原生的C ++ wx類除了wx.ListItem什么也wx.ListItem ,它肯定只會將wx.ListItem返回給wxPython。

因此,我的“解決方案”是導出wx.ListCtrl而不是wx.ListItem ,存儲所需信息並控制那里的外觀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM