安装wxPython
下面是wxPython特别基础的使用方法,将以一个小程序为例来说明,它的功能是在一个文本框中输入文件名,点击open按钮,会在另一个文本框中显示其内容,可以进行修改,点击save可以保存修改。
wxPython的使用简介
创建应用程序对象:wx.App()
app=wx.App() app.MainLoop()
窗口/框架:wx.Frame()
win=wx.Frame(None,title='example') win.Show()
组件
- 按钮:wx.Button()
关键字label设置标签:
btn=wx.Button(win,label='open')
绑定事件:
btn.Bind(wx.EVT_BUTTON,load)
- 文本控件:wx.TextCtrl()
关键字style有wx.TE_MULTILINE(垂直滚动条),wx.HSXROLL(水平滚动条):
filename=wx.TextCtrl(win,style=wx.TE_MULTILINE|wx.HSXROLL)
同时我们可以在读取或者写入其内容:
filename.GetValue()
filename.SetValue('string')
布局:使用尺寸器(sizer)
wx.BoxSizer的原理是创建一个箱子一样的东西,只能横着或者竖着放组件,一个一个的加进去,除了基本大小外其余空间按比例分配。加完一行行的箱子后,创建一个竖着的箱子,将这些横着的箱子(也可以是其他组件)加进去。
*背景组件:wx.Panel()
以窗口为参数构建,所有的组件依附其上,在设置完尺寸器后,使用bkg.SetSizer(box)
- 尺寸器的构建函数:wx.BoxSizer()
有一个决定它是垂直还是水平的参数(wx.HORIZONTAL水平,wx.VERTICAL垂直),默认为水平。
box=wx.BoxSizer(wx.VERTICAL)
- Add方法
proportion参数决定这个组件在剩余空间中的分配比例,flag参数有wx.EXPAND(会确保组件会扩展到分配的空间里),wx.LEFT,wx.RIGHT,wx.TOP,wx.BOTTOM,wx.ALL(这五个决定边框参数会应用到那个边),border参数会确定边框的大小。
完整版的源代码如下:
#coding=utf-8
import wx
#设置函数
def load(event):
f=open(filename.GetValue(),'r')
content.SetValue(f.read())
f.close()
def save(event):
f=open(filename.GetValue(),'w')
f.write(content.GetValue())
f.close()
app=wx.App()
win=wx.Frame(None,title='simple editor',size=(410,330))
bkg=wx.Panel(win)
loadbutton=wx.Button(bkg,label='Open')
loadbutton.Bind(wx.EVT_BUTTON,load)
savebutton=wx.Button(bkg,label='Save')
savebutton.Bind(wx.EVT_BUTTON,save)
filename=wx.TextCtrl(bkg)
content=wx.TextCtrl(bkg,style=wx.TE_MULTILINE|wx.HSCROLL)
hbox=wx.BoxSizer()
hbox.Add(filename,proportion=1,flag=wx.EXPAND)
hbox.Add(loadbutton,proportion=0,flag=wx.LEFT,border=5)
hbox.Add(savebutton,proportion=0,flag=wx.LEFT,border=5)
vbox=wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox,proportion=0,flag=wx.ALL,border=5)
vbox.Add(content,proportion=1,flag=wx.EXPAND|wx.ALL,border=5)
bkg.SetSizer(vbox)
win.Show()
app.MainLoop()`