wxPython应用程序的两个主要部分是:应用程序对象和顶级Window对象
应用程序对应通常指wx.App的子类。
Window对象通查功能指Frame或者Dialog。
创建wx.App子类
1 定义子类
2 在子类定义中重写OnInit()方法
3 在应用程序main方法中创建这个类的一个实例
4 调用应用程序实例的MainLoop方法,这个方法将控制转交给wxPython
OnInit方法在事件循环开始之前调用,这个方法没有参数,只是返回Boolean值来暗示程序是否应该继续运行。通常应该返回True,返回False可以用来处理初始化过程中的重要错误。由于OnInit方法在父类的__init__方法中调用,所以如果需要覆盖__init__方法,那么wx.App.__init__(self) 必须被首先调用。
通常情况下,在OnInit方法内部会创建一个Frame对象,并且调用Frame对象的Show方法。也可以使用SetTopWindow方法设定为顶级Window
在应用程序只有一个Frame的时候也可以不使用wx.App的子类,转而使用wx.PySimpleApp(),只不过此时App的创建要在Frame之前。
参看一下代码:
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = MyNewFrame(None)
frame.Show(True)
app.MainLoop()
PySimpleApp的内容如下:
class PySimpleApp(wx.App):
def __init__(self, redirect=False, filename=None,
useBestVisual=False, clearSigInt=True):
wx.App.__init__(self, redirect, filename, useBestVisual,
clearSigInt)
def OnInit(self):
return True
只应该在应用程序非常简单,不需要任何其他的全局参数的时候使用wx.PySimpleApp
应用程序对象的生命周期:
wxPython应用程序对象的声明周期始于应用程序实例的创建,终于最后一个应用程序窗口关闭。
这意味这在wx.App创建之前不能创建Frame的实例。
wxPython应用程序的生命周期模型如下: