打开另一帧后,如何在wxPython中访问MainFrame?

时间:2014-10-26 18:34:45

标签: wxpython

我想要做的实际上是我想要访问我创建的所有帧。我已经创建了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()

1 个答案:

答案 0 :(得分:1)

你无法访问主窗口,因为你已经使其他窗口模态,即模态的整个点,停止其他所有并等待模态框架关闭然后返回到前一帧。

要在父框架关闭时停止子框架关闭,您需要使它们成为独立的框架。 要执行此操作而不是将self作为父项,请将None作为父项传递。