创建一个最小的空的wxPython程序:
import wx
class App(wx.App):
def OnInit(self):
frame = wx.Frame(parent=None, title='Bare')
frame.Show()
return True
app = App()
app.MainLoop()
上面的代码的任何一行都不能少,否则将不能工作。这个基本的wxPython程序说明了开发任一wxPython程序所必须的五个基本步骤:
-
导入必须的wxPython包
-
子类化wxPython应用程序类
- 定义一个应用程序的初始化方法
- 创建一个应用程序类的实例
- 进入这个应用程序的主事件循环
子类化wxPython application类
下面的代码演示了如何定义我们的wx.App的子类:
class MyApp(wx.App):
def OnInit(self):
frame = wx.Frame(parent=None, id=-1, title="Bare")
frame.Show()
return True
上面我们定义了一个名为
MyApp
的子类。我们通常在
OnInit()
方法中创建
frame
对象。上面的
wx.Frame
接受三个参数,仅第一个是必须的,其余的都有默认值。
调用
Show()
方法使
frame
可见,否则不可见。
定义一个应用程序的初始化方法
注意:我们没有为我们的应用程序类定义一个__init__()方法。在Python中,这就意味着父方法wx.App.__init()__将在对象创建时被自动调用。这是一个好的事情。如果你定义你自己的__init__()方法,不要忘了调用其基类的__init()__方法,示例如下:
class App(wx.App):
def __init__(self):
wx.App.__init__(self)
如果你忘了这样做,wxPython将不被初始化并且你的OnInit()方法也将得不到调用。
创建一个应用程序实例并进入它的主事件循环
这步是创建wx.App子类的实例,并调用它的MainLoop()方法:
app = App()
app.MainLoop()
一旦进入主事件循环,控制权将转交给
wxPython
。
wxPython
GUI
程序主要响应用户的鼠标和键盘事件。当一个应用程序的所有框架被关闭后,这个
app.MainLoop()
方法将返回且程序退出。