Sto provando a creare un nuovo frame in wxPython che è figlio del frame principale in modo che quando il frame principale viene chiuso, anche il frame secondario venga chiuso.Creazione di frame secondari del frame principale in wxPython
Ecco un esempio semplificato del problema che sto avendo:
#! /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()
Se ho impostato frame principale di AboutFrame a None (on line 48) poi la cornice è di circa successo creato e visualizzato, ma rimane aperto quando il frame principale è chiuso.
È questo l'approccio che dovrei prendere per creare frame figlio del frame principale o dovrei farlo in modo diverso, ad es. usando l'evento onClose del frame principale per chiudere qualsiasi frame figlio (in questo modo suona molto "hackish").
Se sto prendendo l'approccio corretto, perché non funziona?