gpt4 book ai didi

python - WxPython:派生 wx.ListItem 但 wx.ListCtrl 只返回旧类

转载 作者:行者123 更新时间:2023-11-28 17:54:22 25 4
gpt4 key购买 nike

派生类有一个小问题,即 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 欣然接受,因为 Python 的鸭子哲学。但现在的问题是,使用方法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++ 编写的,那么效果会很好。但是现在由于设计的限制,对象的多态性失败了: native C++ wx 类除了 wx.ListItem 之外什么也得不到,它肯定只会返回 wx.ListItem 回到 wxPython。

因此,我的“解决方案”是派生 wx.ListCtrl 而不是 wx.ListItem,存储所需的信息并控制那里的外观。

关于python - WxPython:派生 wx.ListItem 但 wx.ListCtrl 只返回旧类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3152153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com