wxFormBuilder是一款可视化的GUI设计工具,界面设计后可以自动生成代码,免去了手工码gui的繁琐,一套界面可支持生成C++\Python\PHP\Lua\XRC等代码形式,可以极大提升python GUI开发效能。
项目发布网址:
https://github.com/wxFormBuilder/wxFormBuilder/releases
工具界面主要分为四大区:项目区、控件区、编辑区、属性区。虽然工具没有提供详细的使用文档,但如果有C#桌面应用开发经验,会发现它与vs studio有几分神似,可以很快上手。界面设计的基本操作步骤为:在【控件区】选择控件,控件会在【编辑区】实时显示,然后在【属性区】编辑控件属性,整个界面布局会以树形层级结构显示在【项目区】,且项目区的控件支持拖动改变位置。
一个GUI的基础框架包括:Frame,Sizer,menubar,statusBar,且控件之间存在层次关系。
Frame:
整个界面的基础框架,直接决定GUI界面大小,其他控件都是在frame基础上才能添加(对应控件区的Forms);
Sizer:
决定了各控件的布局和相对位置,所有的基础控件都应该放在sizer里,且sizer支持嵌套,这也是与vs界面设计器不同的地方,不能支持控件的自由拖动,略显不够灵活,但通过sizer嵌套也可以实现复杂的界面设计(对应控件区的Layout);
控件:
有了上面两层后,就可以真正的添加控件了,提供了支持wxpython的丰富控件,对应控件区的Common、Containers、Menu/Toolbar等;
3.1 sizer布局器
Sizer布局类型有7种:wxBoxSizer、wxWrapSizer、wxStaticBoxSizer、wxGridSizer、wxFlexGridSizer、wxGridBagSizer、wxStdDialogButtonSizer,sizer决定了添加在内部的各个控件的相对位置,如图wxBoxSizer是上下排列的布局器,则frame添加了一个wxBoxSizer,然后在该sizer内添加三个按钮,那么,这三个按钮就自动按自上而下进行排列。
3.2 控件属性
每个控件都可以单独设置属性,也会有自己的独特属性,在此总结了5个影响控件表现的重要属性: style,flag,size ,proportion,orient。
Style: 控件样式,不同的控件有不同的style属性值,勾选后可以实时表现在设计器上;
Flag: 可以设置控件边框、对齐(align)、扩展(expand)等表现;
Size: 设置控件大小;
Proportion:是否自动拉伸(stretch),默认0;
Orient: 控件对齐方式,wxVertical(垂直对齐),wxHorizontal(水平对齐);
3.3 响应事件
有些控件是需要触发事件响应的,比如按钮控件(Button),当点击Button,需要触发某个任务时,就需要为该控件绑定事件。界面设计时,只需要在【属性区】的【Events】页面配置事件对应的函数名,如按钮点击事件是OnButtonClick,具体功能实现放在业务模块重写该事件函数即可。
3.4 生成代码
界面设计完成后,选择File->Generate Code或F8即可生成代码,或者直接切换到对应的代码标签页复制代码,另存到py文件。
引用界面设计器生成的布局代码的基本方法如下:
import wx
# 导入布局器生成的界面代码,如类名为BaseFrame,模块名为base_frame
from base_frame import BaseFrame
class mainWin(BaseFrame):
"继承BaseFrame界面布局"
def __init__(self, parent):
BaseFrame.__init__(self, parent)
# 初始化数据
pass
def handle_event(self, event):
# 重写事件处理函数
pass
if __name__ == '__main__':
app = wx.App()
main_win = mainWin(None)
main_win.Show()
app.MainLoop()
转载网址:
https://mp.weixin.qq.com/s?__biz=MjM5MTkxMTQ4Nw==&mid=2449052654&idx=1&sn=c428f6db3582620ac2bef2b14f0f5247&chksm=b2a368be85d4e1a803c2ad8cf8f88630f8c5143893416ca466456d34beba1efacb628b0b5d71&token=1621876628&lang=zh_CN#rd
看完本文有收获?请转发分享给更多人
关注 【小蟒社区】,一起学Python