I am trying create a new frame in wxPython that is a child of the main frame so that when the main frame is closed, the child frame will also be closed.
我正在尝试在wxPython中创建一个新框架,它是主框架的子框架,这样当主框架关闭时,子框架也将关闭。
Here is a simplified example of the problem that I am having:
以下是我遇到的问题的简化示例:
#! /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()
If I set AboutFrame's parent frame to None (on line 48) then the About frame is succesfully created and displayed but it stays open when the main frame is closed.
如果我将AboutFrame的父框架设置为None(在第48行),则会成功创建并显示“关于”框架,但在主框架关闭时它将保持打开状态。
Is this the approach that I should be taking to create child frames of the main frame or should I be doing it differently, eg. using the onClose event of the main frame to close any child frames (this way sounds very 'hackish').
这是我应该采取的方法来创建主框架的子框架,或者我应该采取不同的方式,例如。使用主框架的onClose事件来关闭任何子框架(这种方式听起来非常'hackish')。
If I am taking the correct approach, why is it not working?
如果我采取正确的方法,为什么它不起作用?
1 个解决方案
#1
class AboutFrame(wx.Frame):
title = "About this program"
def __init__(self):
wx.Frame.__init__(self, wx.GetApp().TopWindow, title=self.title)
#1
class AboutFrame(wx.Frame):
title = "About this program"
def __init__(self):
wx.Frame.__init__(self, wx.GetApp().TopWindow, title=self.title)