2009-07-26 19 views
11

में मुख्य फ्रेम के बच्चे के फ्रेम बनाना मैं wxPython में एक नया फ्रेम बनाने की कोशिश कर रहा हूं जो मुख्य फ्रेम का बच्चा है ताकि जब मुख्य फ्रेम बंद हो जाए, तो बच्चे का फ्रेम भी बंद हो जाएगा।WxPython

यहाँ समस्या यह है कि मैं कर रहा हूँ का एक सरलीकृत उदाहरण है:

#! /usr/bin/env python 

import wx 

class App(wx.App): 

    def OnInit(self): 
     frame = MainFrame() 
     frame.Show() 
     self.SetTopWindow(frame) 
     return True 

class MainFrame(wx.Frame): 

    title = "Main Frame" 

    def __init__(self): 
     wx.Frame.__init__(self, None, 1, self.title) #id = 5 

     menuFile = wx.Menu() 

     menuAbout = wx.Menu() 
     menuAbout.Append(2, "&About...", "About this program") 

     menuBar = wx.MenuBar() 
     menuBar.Append(menuAbout, "&Help") 
     self.SetMenuBar(menuBar) 

     self.CreateStatusBar() 

     self.Bind(wx.EVT_MENU, self.OnAbout, id=2) 

    def OnQuit(self, event): 
     self.Close() 

    def OnAbout(self, event): 
     AboutFrame().Show() 

class AboutFrame(wx.Frame): 

    title = "About this program" 

    def __init__(self): 
     wx.Frame.__init__(self, 1, -1, self.title) #trying to set parent=1 (id of MainFrame()) 


if __name__ == '__main__': 
    app = App(False) 
    app.MainLoop() 

अगर मैं कोई नहीं (लाइन 48 पर) के लिए AboutFrame की मूल फ्रेम सेट फिर इसके बारे में फ्रेम को सफलतापूर्वक बनाकर इसे प्रदर्शित किया जाता है, लेकिन यह खुला रहता है जब मुख्य फ्रेम बंद हो जाता है।

क्या यह दृष्टिकोण है कि मुझे मुख्य फ्रेम के बच्चे के फ्रेम बनाने के लिए लेना चाहिए या मुझे इसे अलग-अलग करना चाहिए, उदाहरण के लिए। किसी भी बच्चे के फ्रेम को बंद करने के लिए मुख्य फ्रेम के ऑनक्लोज़ ईवेंट का उपयोग करके (इस तरह बहुत 'हैकिश' लगता है)।

यदि मैं सही दृष्टिकोण ले रहा हूं, तो यह क्यों काम नहीं कर रहा है?

उत्तर

9
class AboutFrame(wx.Frame): 

    title = "About this program" 

    def __init__(self): 
     wx.Frame.__init__(self, wx.GetApp().TopWindow, title=self.title)