我想要做的实际上是我想要访问我创建的所有帧。我已经创建了3帧 - " MainFrame"," FirstFrame",& #34; SecondFrame"。所以,我想随时打开,关闭或最小化任何帧。是否有可能关闭" MainFrame"没有关闭其他框架??我已经制作了一个程序。但是在这里打开其他框架而不关闭它们后,我无法访问MainFrame。
这是我的代码 -
import wx
class MainFrame(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,"Main WIndow",size=(600,400))
panel=wx.Panel(self)
self.button1=wx.Button(panel,label='First Window',pos=(80,30),size=(130,50))
self.button2=wx.Button(panel,label='Second Window',pos=(80,100),size=(130,50))
self.Bind(wx.EVT_BUTTON,self.evt1,self.button1)
self.Bind(wx.EVT_BUTTON,self.evt2,self.button2)
def evt1(self,parent):
frame=FirstFrame(self,-1)
frame.Show(True)
frame.MakeModal(True)
def evt2(self,parent):
frame=SecondFrame(self,-1)
frame.Show(True)
frame.MakeModal(True)
class FirstFrame(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,"First Window",size=(600,400))
self.Bind(wx.EVT_CLOSE, self.on_close)
def on_close(self, evt):
self.MakeModal(False)
evt.Skip()
class SecondFrame(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,"Second Window",size=(600,400))
self.Bind(wx.EVT_CLOSE, self.on_close1)
def on_close1(self, evt):
self.MakeModal(False)
evt.Skip()
if __name__=='__main__':
app=wx.PySimpleApp()
frame=MainFrame(None,-1)
frame.Show()
app.MainLoop()
答案 0 :(得分:1)
你无法访问主窗口,因为你已经使其他窗口模态,即模态的整个点,停止其他所有并等待模态框架关闭然后返回到前一帧。
要在父框架关闭时停止子框架关闭,您需要使它们成为独立的框架。 要执行此操作而不是将self作为父项,请将None作为父项传递。