整理一下最近学习的关于wxpython的内容。
1.wxpython 基础
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,parent=None,id=-1,size=(800,600))
self.Show()
if __name__=='__main__':
app=wx.App()
frame=MyFrame()
app.MainLoop()
#wxpython程序中必要的两个对象,一个是wx.App()应用程序对象,负责管理整个应用程序事件循环MainLoop;二是顶层的Frame框架,用于控制显示
#http://www.cnblogs.com/roicel/archive/2013/03/05/2944833.html博文中有更为详细的解释
2.组件和布局
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,parent=None,id=-1,size=(800,600))
#定义所有要用到的组件
panel=wx.Panel(self)
filetextctrl=wx.TextCtrl(parent=panel,id=-1)
btn1=wx.Button(parent=panel,id=-1,label="button1")
btn2=wx.Button(parent=panel,id=-1,label="button2")
textctrl=wx.TextCtrl(parent=panel,id=-1,style=wx.TE_MULTILINE|wx.HSCROLL)
#开始布局;我们的布局分成两行,第一行并排的有三个元素;第二行只有一个大的文本编辑框
boxsizer_v1=wx.BoxSizer(wx.HORIZONTAL)#第一行
boxsizer_v1.Add(filetextctrl,proportion=1,flag=wx.EXPAND|wx.ALL,border=5)
boxsizer_v1.Add(btn1,proportion=0,flag=wx.ALL,border=5)
boxsizer_v1.Add(btn2,proportion=0,flag=wx.ALL,border=5)
boxsizer_h=wx.BoxSizer(wx.VERTICAL)
boxsizer_h.Add(boxsizer_v1,proportion=0,flag=wx.ALL|wx.EXPAND,border=5)
#添加第一行,proporsion表示相对本行所在其他元素所占的宽度,如果为0,表示使用默认值,不可拉伸;
#注意如果一个元素被设置成固定值,那么expand拉伸属性无效,但如果是一行被设置成固定值,其内部的元素设置满足拉伸条件的话,同样可以拉伸的
#flag中all属性表示border存在的方位,expand表示是否拉伸
boxsizer_h.Add(textctrl,proportion=1,flag=wx.ALL|wx.EXPAND)#相当于添加第二行,这里因为只有一个元素,所以不用再新建一个行的boxsizer
panel.SetSizer(boxsizer_h)
self.Show()
if __name__=='__main__':
app=wx.App()
frame=MyFrame()
app.MainLoop()
#对于BoxSizer通过vertical和horizontal来定义行和列,支持嵌套使用,因而可以比较方便直观地一行一行添加元素,完成布局
#借鉴博文http://purpen.iteye.com/blog/92130;http://blog.csdn.net/igolang/article/details/9397175
第一次把学习的过程写出来,各种不足和错误还希望大侠指出!