2010-03-12 18 views
5

我已經創建了一個wx.Frame(讓我們稱之爲mainFrame)。這個框架包含一個按鈕,當點擊按鈕時,會創建一個新框架(讓它叫做childFrame)。wxPython幀禁用/啓用?

我想知道如何在childFrame創建時禁用mainFrame並在childFrame被破壞/關閉時再次啓用mainFrame?

Regars,

回答

2

可能是你不需要另一個框架,但一個模式對話框如

import wx 

app = wx.PySimpleApp() 
mainFrame = wx.Frame(None, title="Click inside me") 
def onMouseUp(event): 
    dlg = wx.Dialog(mainFrame,title="I am modal, close me first to get to main frame") 
    dlg.ShowModal() 

mainFrame.Bind(wx.EVT_LEFT_UP, onMouseUp) 
mainFrame.Show() 
app.SetTopWindow(mainFrame) 
app.MainLoop() 
9

可能是你想要的東西是這樣的:


import wx 

class MainFrame(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None, wx.NewId(), "Main") 
     self.sizer = wx.BoxSizer(wx.VERTICAL) 
     self.button = wx.Button(self, wx.NewId(), "Open a child") 
     self.sizer.Add(self.button, proportion=0, border=2, flag=wx.ALL) 
     self.SetSizer(self.sizer) 
     self.button.Bind(wx.EVT_BUTTON, self.on_button) 

     self.Layout() 

    def on_button(self, evt): 
     frame = ChildFrame(self) 
     frame.Show(True) 
     frame.MakeModal(True) 

class ChildFrame(wx.Frame): 
    def __init__(self, parent): 
     wx.Frame.__init__(self, parent, wx.NewId(), "Child") 
     self.Bind(wx.EVT_CLOSE, self.on_close) 

    def on_close(self, evt): 
     self.MakeModal(False) 
     evt.Skip() 

class MyApp(wx.App): 
    def OnInit(self): 
     frame = MainFrame() 
     frame.Show(True) 
     self.SetTopWindow(frame) 
     return True 

app = MyApp(0) 
app.MainLoop()  
+0

WOW,這正是我需要 – 2013-11-30 05:29:02

+0

是啊,我太:) – alwbtc 2014-04-11 06:43:07