2010-03-12 20 views
5

मैंने एक wx.Frame बनाया है (इसे मुख्य फ्रेम कहते हैं)। बटन में क्लिक होने पर इस फ्रेम में एक बटन होता है, एक नया फ्रेम (इसे इसे बच्चे फ्रेम कहते हैं) बनाया जाता है।wxPython फ्रेम अक्षम/सक्षम?

मैं जानना चाहता हूं कि जब बच्चेफ्रेम बनाया जाता है तो मुख्य फ्रेम को कैसे अक्षम किया जाए और जब बच्चेफ्रेम को विचलित/बंद कर दिया जाए तो मुख्य फ्रेम को फिर से सक्षम करें?

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

वाह, यह वास्तव में है क्या मैं –

+0

जरूरत है, हाँ, मुझे भी :) – alwbtc