2010-10-15 8 views
3

Je développe une interface graphique avec wxPython. Je dessine un carré qui représente un objet CD, à l'intérieur d'un autre carré (également avec la classe wxPanel), qui représente l'objet conteneur CD. Je veux avoir "supprimer ce CD" dans le menu clic droit de CDWindow, ce qui supprimera le CDwindow. Fondamentalement, mon code ressemble à ceci (pour plus de simplicité, je garde les parties principales):comment supprimer ou détruire le wx.panel de son parent (un autre objet wx.panel)?

class CDContainerWindow(wx.Panel):  
    def __init__(self): 
     wx.Panel.__init__(self, parent, id, pos, size) 
     cd_win=CDWindow() 

class CDWindow(wx.Panel): 
    def __init__(self): 
     wx.Panel.__init__(self, parent, id, pos, size) 
     self.Bind(wx.EVT_MENU, self.OnDeleteCD, item_CD) 

    def OnDeleteCD(self, event): 
     self.destroy() 

Il y a un message d'erreur « Segmentation fault » Quel est le problème avec mon chemin? Comment puis-je supprimer cette fenêtre de CD de la fenêtre CDContainer?

+0

Le formatage de votre code est foiré et apparemment incomplet, s'il vous plaît réparer et utiliser le "code" bouton –

+0

Vous code n'a aucun sens, pourquoi ne pas coller du code réel, sélectionnez-le et appuyez sur le bouton "code sample" –

Répondre

3

Peut-être y a-t-il encore un calibreur utilisant le panneau détruit? Vous devez d'abord retirer le panneau du calibreur.

+0

Salut, Joril, merci pour votre réponse. Je n'ai utilisé aucun calibreur. Je viens d'inclure le cdwindow en tant que variable. Je ne sais pas s'il est possible de demander à un objet de se détruire. – pepero

+0

Je vois .. Est-ce que la segfault se produit immédiatement en cas de destruction, ou en quittant OnDeleteCD? – Joril

+0

Bonjour, Joril, Merci encore pour votre suivi. J'apprécie vraiment cette grande aide. ça se passait exactement quand j'ai appelé self.Destroy(). Juste une chose, dans la fonction OnPaint de cette classe CDWindow, j'utilise DC pour dessiner des cercles, des carrés et du texte. Et quand j'ai appelé OnDeleteCD, j'ai seulement appelé self.Destroy(). En outre, j'ai mis print ("test") avant et après self.Destroy(), et les deux peuvent être sortis sur la console, puis il y a un message segfault. C'est un peu bizarre. parce que généralement python me donne assez d'informations sur où le problème est. mais cette fois, je reçois seulement cette erreur de segmentation, rien d'autre. – pepero