wxPython官方网站 (https://wxpython.org/),主要提供 事件处理、布局管理、控件、窗口 四个GUI内容。
一、事件处理
self.Bind(wx.EVT_BUTTON, self.on_click, b) 绑定事件,第一个参数(事件类型),第二个参数(事件处理者),第三个参数(事件源)
事件类型:
wx.EVT_BUTTON 按钮
wx.EVT_LEFT_DOWN 鼠标按下
wx.EVT_LEFT_UP 鼠标释放
wx.EVT_MOTION 鼠标移动
二、布局管理
wxPython中可以通过两种方式实现布局管理,即绝对布局和Sizer管理布局。绝对布局就是使用具体数值设置子窗口和控件的位置和大小,它不会随着父容器移动或调整大小后而变化。size=(300,180)和pos=(110,15)都属于绝对布局。
wxPython提供了8个布局管理类,包括wx.Sizer(布局管理类的根类)、wx.BoxSizer(布局器类)、wx.StaticBoxSizer(在box布局周围多一个附加的带静态文本的边框)、wx.WrapSizer()、wx.StdDialogButtonSizer()、wx.GriSizer(以网格形式对子窗口进行摆放, 固定)、wx.FlexGridSizer(网格布局, 大小可不同)、wx.GridBagSizer()。
wx.BoxSizer()是所有布局中最常用的,它可以让其中的子窗口(或控件)沿垂直或水平方向布局。
wx.BoxSizer(参数) wx.HORIZONTAL (垂直布局)、wx.VERTICAL(水平布局)
wx.StaticBoxSizer(box, orient=HORIZONTAL) box(StaticBox(静态框)对象)
wx.StaticBoxSizer(orient, parent, label="") orient(布局方向)、parent(父窗口)
wx.GridSizer(rows, cols, vgap, hgap) rows(行数)、cols(列数)、vgap(垂直间隙)、hgap(水平间隙)
wx.GridSizer(rows, cols, gap) gap(wx.Size类型,指定垂直和水平间隙)
wx.GridSizer(cols,vgap,hgap) 指定列数,不限定行数
wx.GridSizer(cols,gap=wx.Size(0,0)) 同wx.GridSizer(rows, cols, gap)
wx.FlexGridSizer() 同wx.GridSizer() 私有方法有AddGrowableRow(idx, proportion=0)和AddGrowableRow(idx, proportion=0)
Add(window, proportion=0, flag=0, border=0, userData=None) 添加父窗口 proportion(空间占比,仅被wx.BoxSizer使用)、flag(用来控制对齐、边框、调整尺寸)、
Add(sizer, proportion=0, flag=0, border=0, userData=None) 添加到另一个Sizer中,用于嵌套
Add(width, height, proportion, flag=0, border=0, userData=None) 添加一个空白空间
AddMany() 可以一次性添加几个
对齐flag标志 | |
标志 | 说明 |
wx.ALIGN_TOP | 顶对齐 |
wx.ALIGN_BOTTOM | 底对齐 |
wx.ALIGN_LEFT | 左对齐 |
wx.ALIGN_RIGHT | 右对齐 |
wx.ALIGN_CENTER | 居中对齐 |
wx.ALIGN_CENTER_VERTIAL | 垂直居中对齐 |
wx.ALIGN_CENTER_HORIZONTAL | 水平居中对齐 |
wx.ALGIN_CENTRE | 同wx.ALIGN_CENTER |
wx.ALIGN_CENTRE_VERTIAL | 同wx.ALIGN_CENTER_VERTIAL |
wx.ALIGN_CENTRE_HORIZONTAL | 同wx.ALIGN_CENTER_HORIZONTAL |
边框flag标志 | |
标志 | 说明 |
wx.TOP | 设置有顶部边框,边框的宽度需要通过Add()方法的border参数设置 |
wx.BOTTOM | 设置有底部边框 |
wx.LEFT | 设置有左边框 |
wx.RIGHT | 设置有右边框 |
wx.ALL | 设置4面全有边框 |
调整尺寸flag标志 | |
标志 | 说明 |
wx.EXPAND | 调整子窗口(或控件)完全填满有效空间 |
wx.SHAPED | 调整子窗口(或控件)填充有效空间,但保存高宽比 |
wx.FIXED_MINSIZE | 调整子窗口(或控件)为最小尺寸 |
wx.RESERVE_SPACE_EVEN_IF_HIDDEN | 设置此标志后,子窗口(或控件)如果被隐藏,所占空间保留 |
三、控件
wx.StaticText(parent, label, pos) 静态文本对象,parent(父容器)、label(文本内容)、pos(文本位置)
wx.Button(parent, id, label, pos) 按钮对象,parent(父容器)、id(算是识别的参数吧)、label(文本内容)、pos(文本位置)
四、窗口
窗口类主要有wx.Control(控件类的根类)、wx.NonOwnedWindow(子类wx.TopLevelWindow,子孙类wx.Dialog和wx.Frame)、wx.Panel(面板)、wx.MenuBar(菜单栏)。
wx.Frame是构建图形用户界面的主要窗口类。
wx.Panel(parent) parent(父容器)
五、示例