Wxpython: получение wx.listitem но wx.listctrl возвращает только старый класс

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

  •  01-10-2019
  •  | 
  •  

Вопрос

У меня небольшая проблема с полученными классами, а именно 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, храните необходимую информацию и контролируйте там появление.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top