python界面设计工具-wxFormBuilder

一 wxFormBuilder是什么

wxFormBuilder是一款可视化的GUI设计工具,界面设计后可以自动生成代码,免去了手工码gui的繁琐,一套界面可支持生成C++\Python\PHP\Lua\XRC等代码形式,可以极大提升python GUI开发效能。

项目发布网址:

https://github.com/wxFormBuilder/wxFormBuilder/releases

二 wxFormBuilder工具界面

工具界面主要分为四大区:项目区、控件区、编辑区、属性区。虽然工具没有提供详细的使用文档,但如果有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文件。

四 使用自动生成的界面代码

引用界面设计器生成的布局代码的基本方法如下:

 
  1. import wx

  2. # 导入布局器生成的界面代码,如类名为BaseFrame,模块名为base_frame

  3. from base_frame import BaseFrame

  4.  

  5. class mainWin(BaseFrame):

  6. "继承BaseFrame界面布局"

  7.  

  8. def __init__(self, parent):

  9. BaseFrame.__init__(self, parent)

  10. # 初始化数据

  11. pass

  12.  

  13. def handle_event(self, event):

  14. # 重写事件处理函数

  15. pass

  16.  

  17.  

  18. if __name__ == '__main__':

  19. app = wx.App()

  20.  

  21. main_win = mainWin(None)

  22. main_win.Show()

  23.  

  24. 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

  • 7
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值