很多python开发者习惯了写脚本、后端接口,却一直觉得桌面gui很难上手。其实借助 pyside6,只需要python基础语法,就能快速做出跨平台桌面软件,windows、mac、linux都能直接运行。
什么是pyside6
pyside6 是 qt 官方提供的 python 绑定库。qt本身是一套成熟的c++图形界面框架,而pyside6把qt的全部能力封装给python调用。
它和大家听过的pyqt5很像,但有一个关键区别:pyside6采用lgpl协议,商用项目不需要开源代码,没有版权顾虑,这也是现在越来越多人选择它的原因。
qt6 对应 pyside6;qt5 对应 pyside2。新项目直接上手pyside6就好。
环境安装
准备好python环境,一行pip命令安装:
pip install pyside6
安装完成后,就可以直接写第一个窗口程序。
第一个程序:空白窗口
from pyside6.qtwidgets import qapplication, qwidget
import sys
if __name__ == "__main__":
# 应用实例,接收命令行参数
app = qapplication(sys.argv)
# 创建窗口对象
window = qwidget()
# 设置窗口标题
window.setwindowtitle("我的第一个pyside6窗口")
# 设置窗口大小
window.resize(400, 250)
# 显示窗口
window.show()
# 启动事件循环,等待窗口操作,程序不会直接退出
sys.exit(app.exec())
运行代码,就会弹出一个桌面窗口。
简单理解核心逻辑:
qapplication:gui程序必须有的应用实例,管理整个程序生命周期qwidget:所有控件、窗口的基类,简单窗口直接用它app.exec():开启qt事件循环,监听鼠标点击、窗口拖动等交互事件
添加控件:按钮 + 点击事件
只有空白窗口没意义,我们加一个按钮,点击后弹出提示:
from pyside6.qtwidgets import qapplication, qwidget, qpushbutton, qmessagebox
import sys
def show_msg():
qmessagebox.information(window, "提示", "按钮被点击了!")
if __name__ == "__main__":
app = qapplication(sys.argv)
window = qwidget()
window.setwindowtitle("按钮测试")
window.resize(400, 250)
btn = qpushbutton("点我", window)
btn.resize(120, 40)
btn.move(140, 100)
# 信号槽:按钮clicked信号绑定自定义函数
btn.clicked.connect(show_msg)
window.show()
sys.exit(app.exec())
这里就是qt最核心的信号与槽机制:控件发生某个事件(信号,比如点击clicked),自动执行绑定的函数(槽)。不用手动写循环监听,qt内部自动处理。
布局管理:告别手动move定位
上面用move()写死坐标,窗口缩放时控件不会跟着适配。实际开发优先使用布局。
from pyside6.qtwidgets import qapplication, qwidget, qpushbutton, qvboxlayout
import sys
if __name__ == "__main__":
app = qapplication(sys.argv)
window = qwidget()
window.setwindowtitle("垂直布局")
window.resize(300, 200)
layout = qvboxlayout(window)
layout.addwidget(qpushbutton("按钮1"))
layout.addwidget(qpushbutton("按钮2"))
layout.addwidget(qpushbutton("按钮3"))
window.show()
sys.exit(app.exec())
qvboxlayout:垂直布局,控件从上往下排列qhboxlayout:水平布局qgridlayout:网格布局,适合表单
使用布局后,拖动窗口改变大小,控件会自动跟着调整位置,不用手动计算坐标。
两种开发方式怎么选
- 纯代码写界面:适合小型工具、简单面板,代码可控,方便版本管理,上面例子都是这种方式。
- qt designer拖拽ui:可视化拖控件,保存
.ui文件,再用pyside6加载。适合界面复杂、控件多的项目,减少手写布局工作量。
入门阶段建议先手写代码,理解控件和信号槽,熟悉之后再用qt designer提速。
适合什么场景,有哪些局限
适合:
- 写自用小工具、本地批量处理gui(图片处理、文件扫描、数据导出工具)
- 内部办公桌面软件
- 需要跨平台,不想学习c++开发桌面端
不太适合:
- 超复杂大型商业客户端(qt本身可以,但python打包后体积偏大)
- 追求极致启动速度、极小安装包场景
打包分发
写好程序后,可以用pyinstaller打包成exe,发给其他人直接打开,不需要对方安装python:
pyinstaller -f -w main.py
-f:打包成单个exe文件-w:运行时不弹出黑色控制台窗口
注意:打包pyside6程序体积会比较大,这是qt框架本身带来的。
小结
pyside6降低了桌面gui的开发门槛,python开发者可以不用切换语言,快速把脚本封装成带可视化界面的桌面工具。核心就是三件事:创建控件、布局排版、信号槽绑定交互。
入门之后,你可以继续学习输入框、表格、树形控件,或者结合多线程解决gui卡顿问题(耗时任务不能直接在主线程跑,会卡死窗口)。
到此这篇关于python pyside6入门之快速编写桌面gui程序的实践教学的文章就介绍到这了,更多相关python pyside6编写桌面gui内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论