Question

J'ai un petit problème avec les classes dérivées, à savoir wx.ListItem avec wx.ListCtrl. Je wx.ListItem tirais avec succès en tant que MediaItem, le code est terminé, mais vous obtenez le point:

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 accepte volontiers que du fait de la philosophie Pythons de canard. Mais maintenant, le problème est que l'utilisation de la méthode wx.ListCtrl.GetItem(index) retourne un ListItem, non MediaItem. Python se plaignait de ne pas avoir un wx.ListItem getFullname d'attribut.

objets casting semble être la mauvaise façon d'aborder la solution. Cela n'a probablement rien à voir avec le problème, mais je coller la ligne incriminée comme est ainsi:

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

self.filelist est un wx.ListCtrl.

Était-ce utile?

La solution

Je suppose que je devrais juste sucer, et régressent à la comptabilité manuelle suboptimale. Lorsque vous avez terminé avec goût, ce n'est pas une grosse affaire, mais j'avais l'espoir plus élevés pour wxPython.

Soi-disant (de ce que je cherchais et collectionnais) la question est la nature proxy de base de classe wxPython. Ont-ils été écrits en Python pur, ou je codé en C ++, cela aurait bien fonctionné. Mais maintenant, le polymorphisme des objets échoue en raison de limitations dans la conception: le C ++ natif classe WX ne tirerez rien mais un wx.ListItem et il va certainement revenir en arrière seulement de wx.ListItem à wxPython.

Ma « solution » est donc à wx.ListCtrl Derive au lieu de wx.ListItem, de stocker les informations nécessaires et de contrôler les apparitions là.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top