2014-10-26 33 views
0

我想要做的实际上是我想要访问所有我创建的框架。在这里我创建了3个框架 - “MainFrame”,“FirstFrame”,“SecondFrame”。因此,我想打开,关闭或者最小化任何我想要的帧。是否可以关闭“MainFrame”而不关闭其他帧?我已经创建了一个程序。但是,在打开其他帧而不关闭它们之后,我无法访问MainFrame。如何在打开另一个框架后访问wxPython中的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() 

回答

1

,因为你所做的其他窗口莫代尔你不能访问主窗口,这就是模式的整点,停止一切并等待模态框架之前关闭返回到前一帧。

要在父框架关闭时停止子框架关闭,您需要使它们成为独立框架。 要做到这一点,而不是将自己作为父项,请将None作为父项。

相关问题