wxPython编写界面程序的基本流程:
1、import wx #导入wxPython的包
2、class App(wx.App) #子类化一个应用程序类
3、def onInit(self) #定义应用程序类的初始化方法
4、app = App() #实例化一个应用程序类
5、app.MainLoop() #进入这个应用程序的主事件循环
下面是一个例子:
import wx #——对应第一步
class App(wx.App): #——对应第二步
def OnInit(self): #——对应第三步
frame = wx.Frame(parent = None, id = -1, title = 'Bare')
frame.Show() #默认参数为True,即frame.Show(True)
return True #这里一定要写return,否则就会一闪而过;return False的话会一闪而过,然后提示退出;因此要能够自主关闭,看到程序框架的话,必须得return True
app = App() #——对应第四步
app.MainLoop() #——对应第五步
下面是一个实例(python基础教程第二版12章),但是不是以class的面向对象的形式来展现的,基本涵盖了一个可响应的活的应用程序的几个组成部分:
1、导入wxPython的包
2、定义一会需要用到的响应函数load和save
3、实例化一个应用程序类:如果app =wx.App()不生效或者有问题的话,可以使用app = wx.PySimpleApp()语句
4、定义frame
5、定义panel,将所需要的按钮、文本框等放到panel中
6、智能布局:使用BoxSizer() ,采用相对布局,将布局纳入到panel中
7、定义响应绑定事件(使用wxPython本身的响应函数,将具体需要操作的事件定义在事件函数中,绑定后即可通过相应操作,做出需要的响应)
8、show出Frame
9、进入app应用程序的主事件循环
1 # -*-coding:gb2312-*- 2 3 #Function:第12章-图形用户界面,写一个记事本的简化程序 4 #Author:LiXia 5 #Version:V 1.0.0.1 6 7 import wx 8 9 def load(event): 10 file = open(filename.GetValue()) 11 contents.SetValue(file.read()) 12 file.close() 13 14 def save(event): 15 file = open(filename.GetValue(), 'w') 16 file.write(contents.GetValue()) 17 file.close() 18 19 app = wx.App() 20 win = wx.Frame(None, id = -1, title = 'Simple Editor', size = (410, 335)) 21 22 bkg = wx.Panel(win) 23 24 loadButton = wx.Button(bkg, label = 'Open') 25 loadButton.Bind(wx.EVT_BUTTON, load) 26 27 saveButton = wx.Button(bkg, label = 'Save') 28 saveButton.Bind(wx.EVT_BUTTON, save) 29 30 filename = wx.TextCtrl(bkg) 31 contents = wx.TextCtrl(bkg, style = wx.TE_MULTILINE|wx.HSCROLL) 32 33 hbox = wx.BoxSizer() 34 hbox.Add(filename, proportion = 1, flag = wx.EXPAND) 35 hbox.Add(loadButton, proportion = 0, flag = wx.LEFT, border = 5) 36 hbox.Add(saveButton, proportion = 0, flag = wx.LEFT, border = 5) 37 38 vbox = wx.BoxSizer(wx.VERTICAL) 39 vbox.Add(hbox, proportion = 0, flag = wx.EXPAND|wx.ALL, border = 5) 40 vbox.Add(contents, proportion = 1, flag = wx.EXPAND|wx.LEFT|wx.Bottom|wx.RIGHT, border = 5) 41 42 bkg.SetSizer(vbox) 43 win.Show() 44 45 app.MainLoop()