一、平台
Tkinter, wxpython, pythonwin, Java Swing, pyGTK, pyQt
二、创建窗口和组件
import wx
app = wx.App() #创建应用程序对象
win = wx.Frame(None) #创建窗体
win.Show() #显示窗体
app.MainLoop() #运行程序
三、增加按钮和按钮处理事件
1.wx.Button()添加按钮函数
2.利用部件的Bind()方法可以将事件处理函数链接到给定的事件上。~.Bind(按钮事件, 函数名)
loadButton.Bind(wx.EVT_BUTTON, load) #wx.EVT_BUTTON为按钮点击事件
四、窗体的标签/标题与布局
1.title/label pos,size
2.尺寸器:sizer wx.BoxSizer 尺寸器会管理组件的尺寸。只要将部件添加到尺寸器上,再加上一些布局参数,然后让尺寸去管理父组件的尺寸。需要增加背景组件(wx.Panel),创建一些嵌套的wx.BoxSizer,然后使用面板的SetSizer方法设定它的尺寸器。
#coding:utf-8
#code:12-5
import wx
app = wx.App() #创建应用程序对象
win = wx.Frame(None, title = 'Simple Editor', size = (410, 335)) #创建窗体
bkg = wx.Panel(win) #增加背景组件
loadButton = wx.Button(bkg, label = 'Open')
saveButton = wx.Button(bkg, label = 'Save')
filename = wx.TextCtrl(bkg)
contents = wx.TextCtrl(bkg, style = wx.TE_MULTILINE or wx.HSCROLL) #设置垂直和水平滚动条 MULTILINE多行
hbox = wx.BoxSizer() #添加尺寸器进行布局,默认参数为水平
hbox.Add(filename, proportion = 1, flag = wx.EXPAND) #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.EXPAND | wx.ALL, border = 5)
vbox.Add(contents, proportion = 1, flag = wx.EXPAND | wx.LEFT | wx.BOTTOM | wx.RIGHT, border = 5)
bkg.SetSizer(vbox)
win.Show()
app.MainLoop()
Add方法有几个参数,proportion参数根据在窗口改变大小时说分配的空间设置比例,可以将proportion设定为任何数;flag参数类似于构造函数中的style参数,wx.EXPAND 标记确保组件会扩展到所分配的空间中, wx.LEFT | wx.BOTTOM | wx.RIGHT|wx.Top|wx.ALL标记决定了边框参数应用于哪个边,边框参数 border 用于设置边缘宽度(间隔)
wx.TextCtrl()创建文本框。
五、code:12-6
#coding: utf-8
import wx
def load(event):
file = open(filename.GetValue()) #获取文件名
contents.SetValue(file.read()) #contents.SetValue将文本引入文本区
file.close()
def save(event):
file = open(filename.GetValue(), 'w')
file.write(contents.GetValue()) #GetValue用于从文本区获得信息
file.close()
app = wx.App()
win = wx.Frame(None, title = 'Sample Editor', size = (410, 335))
bkg = wx.Panel(win)
loadButton = wx.Button(bkg, label = 'Open')
loadButton.Bind(wx.EVT_BUTTON, load) #点击按钮,调用函数wx.EVT_BUTTON的符号常量表示一个按钮事件
saveButton = wx.Button(bkg, label = 'Save')
saveButton.Bind(wx.EVT_BUTTON, save)
filename = wx.TextCtrl(bkg)
contents = wx.TextCtrl(bkg, style = wx.TE_MULTILINE or 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.EXPAND or wx.ALL, border = 5)
vbox.Add(contents, proportion = 1, flag = wx.EXPAND or wx.LEFT or wx.RIGHT or wx.BOTTOM, border = 5)
bkg.SetSizer(vbox)
win.Show()
app.MainLoop()