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)
Возвращает А. ListItem
, нет MediaItem
. Отказ Python жаловался wx.ListItem
не имеющий атрибута getFullname
.
Облицовка объектов, кажется, неверным способом приблизиться к решению. Это, вероятно, не имеет ничего общего с проблемой, но я вставляю оскорбительную линию как есть также:
filename = self.filelist.GetItem(event.GetIndex()).getFullname()
Где self.filelist
это wx.ListCtrl
.
Решение
Я думаю, что я должен просто сосать его, а регресс до неоптимальной ручной бухгалтерии. Когда это сделано со вкусом, это не большая сделка, но у меня были более высокие надежды на Wxpython.
Предположительно (от того, что я искал и собрал) вопрос с прокси-характером базы класса WXPYPHON. Были ли они написаны в чистом Python или кодировали в C ++, это будет хорошо работать. Но теперь полиморфизм объектов терпит неудачу из-за ограничений в дизайне: нативный класс C ++ WX не получит ничего, кроме wx.ListItem
и это, безусловно, вернет только wx.ListItem
Вернуться к Wxpython.
Мое «решение» таким образом, чтобы вывести wx.ListCtrl
вместо wx.ListItem
, храните необходимую информацию и контролируйте там появление.