2010年10月11日 星期一

創建一個wx.App 的子類

[摘錄] 創建一個 wx.App 的子類
http://www.czug.org/python/wxpythoninaction/ch02.htm

創建和使用一個wx.App子類,你需要執行四個步驟:
1、定義這個子類
2、在定義的子類中寫一個OnInit()方法
3、在你的程式的主要部分創建這個類的一個實例
4、調用應用程式實例的MainLoop()方法。這個方法將程式的控制權轉交給wxPython 

import wx 
class MyApp(wx.App):   #1 定義子類
def OnInit(self):     #2 OnInit()方法
    frame = wx.Frame(parent=None, title=u'這是 Frame 容器')
    frame.Show()
    return True
app = MyApp()          #3 創建這個類的一個實例
app.MainLoop()         #4調用MainLoop() 方法

我們在第一章中看到過OnInit()方法。它在應用程式開始時並在主事件迴圈開始前被wxPython系統調用。這個方法不要求參數並返回一個布林值,如果所返回的值是False,則應用程式將立即退出。大多數情況下,你將想要該方法返回的結果為真。處理某些錯誤條件,退出可能是恰當的方法,諸如所一個所需的資源缺失。
 
由於OnInit()方法的存在,並且它是wxPython架構的一部分,所以任何關於你的定制的類的所需的初始化通常都由OnInit()方法管理,而不在Python__init__方法中。

如果由於某些原因你決定需要__init__方法,那麼你必須在你的__init__方法中調用父類的__init__方法,如下所示:
 
wx.App.__init__(self)

通常,你在OnInit()方法中將至少創建一個框架物件,並調用該框架的Show()方法。你也可以有選擇地通過調用SetTopWindow()方法來為應用程式指定一個框架作為頂級視窗。頂級視窗被作為那些沒有指定父視窗的對話方塊的默認父視窗。

 

沒有留言: