Création de cadres enfants du cadre principal en wxPython
j'essaie de créer un nouveau cadre en wxPython qui est un enfant du cadre principal de sorte que lorsque le cadre principal est fermé, le cadre enfant sera également fermé.
Voici un exemple simplifié le problème que je rencontre:
#! /usr/bin/env python
import wx
class App(wx.App):
def OnInit(self):
frame = MainFrame()
frame.Show()
self.SetTopWindow(frame)
return True
class MainFrame(wx.Frame):
title = "Main Frame"
def __init__(self):
wx.Frame.__init__(self, None, 1, self.title) #id = 5
menuFile = wx.Menu()
menuAbout = wx.Menu()
menuAbout.Append(2, "&About...", "About this program")
menuBar = wx.MenuBar()
menuBar.Append(menuAbout, "&Help")
self.SetMenuBar(menuBar)
self.CreateStatusBar()
self.Bind(wx.EVT_MENU, self.OnAbout, id=2)
def OnQuit(self, event):
self.Close()
def OnAbout(self, event):
AboutFrame().Show()
class AboutFrame(wx.Frame):
title = "About this program"
def __init__(self):
wx.Frame.__init__(self, 1, -1, self.title) #trying to set parent=1 (id of MainFrame())
if __name__ == '__main__':
app = App(False)
app.MainLoop()
si je positionne le cadre parent de L'image à None (sur la ligne 48) alors le cadre About est créé et affiché avec succès mais il reste ouvert lorsque le cadre principal est fermé.
c'Est l'approche que je devrait prendre pour création d'images de la trame principale ou devrais-je faire différemment, par exemple. utiliser l'événement onClose du cadre principal pour fermer les cadres enfants (cela sonne très "hackish").
si j'adopte la bonne approche, pourquoi ne fonctionne-t-elle pas?
11
demandé sur
Peter Horne
2009-07-26 22:08:57
1 réponses
class AboutFrame(wx.Frame):
title = "About this program"
def __init__(self):
wx.Frame.__init__(self, wx.GetApp().TopWindow, title=self.title)
9
répondu
Toni Ruža
2009-07-26 18:37:56