使用Python很长时间了,一直以来想写一些有关WxPython的文章,最近有时间准备对WxPython的使用作一次系统的整理。我将在随后的日志中逐步增加对WxPython应用的介绍,有关WxPyton环境的配置我就不多讲了,大家可以看我的博客。

记得我看的第一本介绍编程的书是通过一个Hello Wold例子开始的,我也不免俗套,好了,废话少说让我们开始吧。

<!--[if !supportLists]-->1、  <!--[endif]-->Frame介绍

我学习编程习惯从例子开始,让自己脑子里先有个大致的映像再开始,下是一个Frame窗口的例子,非常简单只有几行代码,但是这已经是一个完整的可以运行的程序了:

import wx
 
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self,None,-1,"Hello World",size=(300,400))       
        
if __name__=="__main__":
    app = wx.PySimpleApp()
    frame=MyFrame()
    frame.Show(True)
    app.MainLoop()

 

把上面的代码保存成MyFrame.py。在命令行中执行 python MyFrame.py。你应该可以看到一个窗口,当然什么都没有。

好了,有了上面的代码我们来看看它是怎么执行的, 其中if __name__=="__main__":是程序执行的开始部分,你如果接触过,C++或者Java它相当于Main函数部分。具体细节就不说了,这属于Python语法的部分。Wx.PySimpleApp是wxPython中执行应用程序的一个封装,我会在后面讲到,这里你记住它是应用程序执行的入口就可以了。

好下面关键的部分到了,MyFrame是我们创建的一个Python类,注意它的__init__函数,它是这个类的构造函数,wx.Frame.__init__()方法用于创建一个窗口,也就是我们看到的窗口。它创建了一个独立的大小为300*400,窗口标题为“Hello World”。好了讲到这里你大致明白了怎么创建一个简单的窗口,让我们稍微再深入一点。看看窗口还有哪些属性和方法。

<!--[if !supportLists]-->2、  <!--[endif]-->Frame深入

WxPython的Frame来自wx这个包,就像我们在代码中作的那样,你需要首先导入wx包(import wx)。一个窗口一般都会有菜单、工具栏和状态栏,你可以通过CreateStatusBar/CreateToolBar等方法来创建他们。在讲这些之前首先来看看这个类的构造函数__init__,这个函数原型如下:

wxFrame(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame")

参数名

解释

parent

这个参数指明了窗口的父窗口是什么,可以是Null

id

窗口的唯一表示,缺省为-1

title

窗口的标题

pos

窗口的位置,缺省为(-1,-1),具体显示位置根据不同的操作系统平台而异。

size

窗口的大小,缺省为(-1,-1),具体显示大小根据不同的操作系统平台而异。

style

窗口的风格,比如是否有关闭按钮,是否可以最大化等等,随后会详细讲述。

Name

窗口的名称,通常被用于与资源文件关联,可以利用它来进行“皮肤”设置。