wxPython 基础

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应用程序的生命周期模型如下:

wxPython 基础_第1张图片

你可能感兴趣的:(wxPython)