2009-07-26 30 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の親フレームを設定した場合、その後についてフレームが正常に作成され、表示されますが、それは開いたままにされますメインフレームが閉じられたときに、

これは、メインフレームの子フレームを作成するために取るべきアプローチですか、それとも別の方法で行うべきですか。メインフレームのonCloseイベントを使用して子フレームを閉じます(これは非常に「ハッキリ」と聞こえます)。

私が正しいアプローチをとっているのであれば、それはなぜ機能しないのですか?

答えて

9
class AboutFrame(wx.Frame): 

    title = "About this program" 

    def __init__(self): 
     wx.Frame.__init__(self, wx.GetApp().TopWindow, title=self.title) 
関連する問題