Wxpython快速构建GUI窗口程序
最近学习了一下关于用wxpython来构建窗口GUI程序,关于wxFormbuilder和wxpython的用法,理解的还不是很透彻,强行此文。因此本文适合新人,请大牛们多多指教,谢谢
- Python2.7.13
- wxpython2.8
- wxFormbuilder 3.8
具体的思路可以用MVC来阐述,先用wxFormBuilder来构建GUI,即View,导出一个模板Model,然后用Python来实现具体的Control。
安装python
- 下载 安装包: https://www.python.org/ftp/python/2.7.13/python-2.7.13.amd64.msi
- 下载好后,直接双击安装即可。
安装wxpython
- 直接用安装的pip来安装即可, 也可以指定版本来安装
pip install wxpyton
- 除了用pip来安装, 还有就是可以在SourceForge.net下载exe文件直接安装。
安装 wxFormBuilder
- 下载 https://sourceforge.net/projects/wxformbuilder/files/latest/download这里可以下载,
- 还要就是github也可以下载,但是github是最新的:https://github.com/wxFormBuilder/wxFormBuilder/releases
- 安装 exe文件直接运行就可以了;
- 创建一个工程
用wx来构建GUI
- 首先用wxformbuilder来构建一个Form,然后在layout,最后添加组件,比如button
- 然后对组件添加事件,如下面:wx.EVT_LEFT_DCLICK, self.click_button1
- 最后导出这个py文件,在实现的方法里面,实现这个action【这个函数click_button1】。就完成了
# -*- coding: utf-8 -*-
###########################################################################
## Python code generated with wxFormBuilder (version Oct 26 2018)
## http://www.wxformbuilder.org/
##
## PLEASE DO *NOT* EDIT THIS FILE!
###########################################################################
import wx
import wx.xrc
###########################################################################
## Class MyFrame1
###########################################################################
class MyFrame1 ( wx.Frame ):
def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
bSizer1 = wx.BoxSizer( wx.VERTICAL )
self.m_button1 = wx.Button( self, wx.ID_ANY, u"MyButton1", wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer1.Add( self.m_button1, 0, wx.ALL, 5 )
self.m_button2 = wx.Button( self, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer1.Add( self.m_button2, 0, wx.ALL, 5 )
self.m_button3 = wx.Button( self, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer1.Add( self.m_button3, 0, wx.ALL, 5 )
self.m_button4 = wx.Button( self, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer1.Add( self.m_button4, 0, wx.ALL, 5 )
self.SetSizer( bSizer1 )
self.Layout()
self.Centre( wx.BOTH )
# Connect Events
self.m_button1.Bind( wx.EVT_LEFT_DCLICK, self.click_button1 )
def __del__( self ):
pass
# Virtual event handlers, overide them in your derived class
def click_button1( self, event ):
event.Skip()
运行
下面是的结果
有可以参考官方的Demo,下面是一个简单的demo。
import wx #导入wx包
app = wx.App() #创建应用程序对象
win = wx.Frame(None,-1,'install test') #创建窗体
btn = wx.Button(win, label = 'Button') #创建Button
win.Show() #显示窗体
app.MainLoop() #运行程序
总结
综上,如果是没有「wxFormBuilder」这个工具的话,好多常量和用法,应该也是查资料,而且 wxpython 的资料非常不全,,用 Python 弄出个 GUI 程序,估计也是够折腾的,但是有了这个工具,非常高效,简单方便。
-
在用或者做某些东西事情之前,最好在网上搜一下,看一下是否有现成的轮子,避免不必要的造轮子。
-
多「看书」。看书看资料,不能在当下立马的起作用,但是可以在将来某个时间段能其作用。比如我知道了做GUI可以用现有的工具直接设计 View,类似 wxWidget、wxFormBuilder。
参考链接
作者:叉叉敌
博客:https://chasays.github.io/
微信公众号:Chasays, 欢迎关注一起吹牛逼,也可以加个人微信号「xxd_0225」互吹。
本博客大多为学习笔记或读书笔记,本文如对您有帮助,还请多推荐下此文,如有错误欢迎指正,相互学习,共同进步。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现