2009-07-26 30 views
11

Tôi đang cố gắng tạo một khung mới trong wxPython là một phần tử con của khung chính sao cho khi khung chính được đóng, khung con cũng sẽ bị đóng.Tạo khung con của khung chính trong wxPython

Đây là một ví dụ đơn giản của vấn đề mà tôi đang gặp:

#! /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() 

Nếu tôi đặt khung mẹ AboutFrame để None (on line 48) thì Về khung được tạo thành công và hiển thị nhưng nó vẫn mở khi khung chính được đóng lại.

Đây có phải là cách tiếp cận mà tôi nên thực hiện để tạo khung con của khung chính hay tôi nên thực hiện nó theo cách khác, ví dụ: sử dụng sự kiện onClose của khung chính để đóng bất kỳ khung hình con nào (theo cách này nghe có vẻ rất 'hackish').

Nếu tôi đang sử dụng đúng cách tiếp cận, tại sao nó không hoạt động?

Trả lời

9
class AboutFrame(wx.Frame): 

    title = "About this program" 

    def __init__(self): 
     wx.Frame.__init__(self, wx.GetApp().TopWindow, title=self.title) 
Các vấn đề liên quan