wxPython是一个Python的GUI库,详细参看:www.wxpython.org
wxPython基于wxWidgets,它是一个跨平台的、使用C++语言完成的UI库,详细但看:www.wxwidgets.org
wxPython不仅仅是对wxWidgets的封装,它还使用wxPython完成了部分组件的开发。
要想使用wxPython需要安装python和wxPython,相关安装方法请大家参看对应的文档,由于我使用的是Mac Leopard,这两个软件已经预先安装了,所以我就不需要在安装。
我使用的编辑器是TextMate,当让vi,emacs,jedit都可以,为了方便我使用了TextMate,非Mac用户可以使用vi,可能比TextMate还要强大。
第一个简单的wx应用程序
逐行解释
#!/usr/bin/env python
这被称为shebang,用来告诉python解析器的位置,如果这个文件被设定了执行权限,那么通过 % spare.py 可以直接执行这个文件。
"""Spare.py is a starting point for a wxPython program."""
这被称为这个模块的docstring,相当于这个模块的说明文档,方便其他开发人员阅读,可以使用如下的方式获得:
>>> import spare
>>> print spare.__doc__
Spare.py is a starting point for simple wxPython programs.
>>>
class Frame(wx.Frame):
pass
声明了wx.Frame的一个子类,该类表示了一个Frame。
这里的Frame比较简单,只是一个空白窗口,如果需要复杂的Frame,可以在这个类中完成。
class App(wx.App):
def OnInit(self):
self.frame = Frame(parent=None, title="Spare")
self.frame.Show()
self.SetTopWindow(self.frame)
return True
声明了一个wx.App的子类,实现了OnInit方法,这个方法会被wx自动调用,以此来显示我们的应用程序,其中的frame对象为上述我们自定义的Frame子类。SetTopWindow方法是一个可选方法,用来告诉wx应用程序那个Frame是主Frame。
if __name__ == '__main__':
这用来判断这个文件是作为应用程序直接执行的还是被引用的。
如果被引用,那么__name__变量的内容为文件的名字,可以使用如下的代码查看。
>>> import spare
>>> spare.__name__
'spare'
>>>