wxPython是一个基于wxWidgets的跨平台界面库,同类的界面库还有GTK,QT等等,笔者使用的环境是Windows XP+Python2.6+wxPython2.8。wxPython下载地址:http://downloads.sourceforge.net/project/wxpython/wxPython/2.8.9.2/wxPython2.8-win32-unicode-2.8.9.2-py26.exe?use_mirror=nchc。
1. 第一个demo(使用提供的PySimpleAPP),对于demo,先来code再解释:
对于一个应用来说,必不可少的是需要一个wx.APP,一个Frame,所以每个应用必须至少包含这两个,上面的实例也一样,接下来一句一句解释,先从‘__main__’看起:
app = wx.PySimpleApp(True, "demo1.log") #起一个App,第一个参数表示是否输出打印,第二个参数表示输出的文件名,若第二个参数为None,则输出到窗口中。
frame = MyFrame() #起一个Frame
frame.Show(True) #显示
app.MainLoop() # 交出执行权,进入消息循环
在自定义的MyFrame类中,
首先调用基类的初始化函数__init__;
然后给Frame增加一个控件Panel,接着给panel绑定wx.EVT_MOTION事件,并设定了回调函数self.OnMove;
继续增加控件StaticText;
继续增加控件TextCtrl;
在回调函数OnMove中,设置postion;
2.复杂一点的demo(使用背景图片,自定义输出)
还是先从'__main__'看起,怎么这时候没有了Show(),直接进入MainLoop了呢?待我们再细细看下看,wx.APP会在初始化函数__init__中调用OnInit方法,而我们的Show()就是放在OnInit函数中了哈,在OnInit我们可以做一些我们需要初始化的事情。
在Frame类中,给Frame控件增加了一个StaticBitmap控件,这样就给Frame加上图片背景了;
如果要自定义输出,就需要在App类型中设定变量outputWindowClass的值,demo上我们设定了outputWindowClass = PyOnDemandOutputWindow;
#PyOnDemandOutputWindow示例,增加了日志输出时间:
wxPython封装的很面向对象,使用起来也很顺手哈。