1 GUI(Graphical User Interface)
图形用户界面
1.1 创建应用程序
两个基本对象
- 应用程序对象:管理主事件循坏,是wxpython的动力,如果没有,wxpython将不能执行
- 顶级窗口对象:用于管理最重要的数据,控制并呈现给客户
1.1.1 创建一个wx.App的子类
- 定义这个子类
- 在定义的子类中写一个OnInit()初始化方法
- 在程序的主要部分创建这个类的一个实例
- 调用应用程序的MainLoop()方法。这个方法将程序的控制权转交给wxpython
'''
定义了一个子类App,定义了父类wx.App,子类中包含了一个初始化方法OnInit(),在主程序中创建类的实例,然后调用MainLoop()主循环方法。
'''
import wx #导入模块
class App(wx.App): #定义App类,继承wx.App父类
def OnInit(self): #定义一个初始化方法
frame = wx.Frame(parent=None,title = 'Hello wxpython') #创建窗口
frame.Show() #显示窗口
return True # 返回值
if __name__ == '__main__':
app = App() #创建App类的实例
app.MainLoop() #创建App类的MainLoop()主循坏方法
1.1.2 直接使用wx.App
如果系统中只有一个窗口的话,可以不创建wx.App子类,直接使用wx.App,这个类提供一个最基本的OnInit()初始化方法
import wx
app = wx.App() #初始化wx.App类
frame = wx.Frame(parent=None,title = 'Hello wxpython') #定义一个顶级窗口
frame.Show() #显示窗口
app.MainLoop() #调用wx.App的MainLoop方法
1.1.3 使用wx.Frame框架
在GUI中框架就是窗口,也是一个容器,用户可以将它在屏幕上任意移动,包含标题栏和菜单、等wxpython中,wx.Frame是所有框架的父类,当你创建wx.Frame的子类时,子类应该调用父类
的构造器wx.Frame.init()
wx.Frame.init()构造器语法格式如下:
wx.Frame(parent,id=-1,title="",pos=wx.DefaultPostion,size=wx.DefaultSize,style=wx.Defult_Frame_Style,name = "frame")
- parent:框架父窗口,如果是顶级,就是None
- id:新窗口的wxpython ID,通常设定成-1
- title:窗口的标题
- pos:窗口的位置
- size:窗口的大小
- style:指定窗口的类型的常量
- name:框架内在的名字,可以使用它来寻找窗口
import wx
class MyFrame(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent= None,id= -1,title= "",pos=(),size=(),style="",name="")
if __name__ == "__main__":
app = wx.App()
frame = MyFrame(None,-1)
frame.Show()
app.MainLoop()
1.1.4 常用控件
1.1.4.1 静态文本
wx.StaticText(paerent,id,label,pos,size,style,name="")
- parent:父窗口部件
- id:标识符,使用-1可以自动创建一个唯一的标识符
- label:现在在控件中的文本内容
- pos:位置
- size:大小
- style:标记样式
- name:对象的名字
1.1.4.2 创建面板
panel = wx.Panel(self)
创建面板,并将panel作为父类,然后将组件放入窗体中。
1.1.4.3 设置字体
通过wx.Font类设置字体
font = wx.Font(pointsize,family,style,weight,underline=False,faceName="",encoding="")
- pointSize:字体的整数尺寸,单位为磅
- family:
- style:倾斜
- weight:指定字体的醒目程度
- faceName:指定字体名
- encoding;编码方式
title.SetFont(font)
1.1.4.4 输入文本类
text = wx.TextCtrl(parent,id,value="",pos=(),size=(),style=0,validator="",name="")
参数说明:
- style:单行wx.TextCtrl的样式
- wx.TE_CENTER:文本居中
- wx.TE_LEFT:文本左对齐
- wx.TE_NOHIDESEL : 文本始终高亮显示,只适用于windows
- wx.TE_PASSWORD : 不显示键入的文本
- value:显示在文本控件中的默认值
- validator:常用于过滤数据以确保只能键入要接受的数据
1.1.4.5 按钮控件
the_button = wx.Button(parent,id,label,pos,size=wxDefaultSize,style=0,validator,name="button")
the_button是一个对象,实例化wx.Button类得到的
1.1.4.5 绑定事件
the_button.Bind(wx.EVT_BUTTON,OnClickSubmit)
参数说明:
- wx.EVT_BUTTON:按钮事件类型
- wx.EVT_MOTION:用户移动鼠标事件
- OnClickSubmit:方法名
1.1.4.6 弹出框
wx.MessageBox(value) #value就是需要弹出的内容
1.1.4.7 BoxSizer布局
sizer = wx.BoxSizer(wx.VERTIVAL)
-
wx.VERTIVAL
-
wx.HORIZONTAL
创建一个wx.BoxSizer对象,命名为sizer,带有一个决定是水平或者垂直的参数,默认是水平然后使用Add()方法将控件加入sizer,使用面板的SetSizer()方法设定它的尺寸器
sizer.Add(control,proportion,flag,border)
参数说明:
- control :要添加的控件
- proportion:
- flag:
- boder: