Ich versuche, einen neuen Rahmen in WxPython, der ein Kind des Hauptrahmens ist, so dass der untergeordnete Rahmen geschlossen wird, wenn der Hauptrahmen geschlossen wird.Erstellen von untergeordneten Rahmen des Hauptrahmens in WxPython
Hier ist ein vereinfachtes Beispiel für das Problem, dass ich habe:
#! /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()
Wenn ich AboutFrame übergeordneten Rahmen zu None (auf der Leitung 48), dann der Über-Rahmen wird erfolgreich erstellt und angezeigt gesetzt, aber es bleibt offen wenn der Hauptrahmen geschlossen ist.
Ist das der Ansatz, den ich nehmen sollte, um Kind-Frames des Hauptrahmens zu erstellen, oder sollte ich es anders machen, z. Verwenden Sie das onClose-Ereignis des Hauptrahmens, um alle untergeordneten Frames zu schließen (dies klingt sehr "hackisch").
Wenn ich den richtigen Ansatz nehme, warum funktioniert es nicht?