装完pyqt5想做个带窗口的小工具,盯着空白代码不知道从哪下手,这是多数新手的第一关。pyqt5界面设计有两条路:手写代码撸控件,或者用Qt Designer拖控件出原型,实际项目里往往两条混着用。
先把环境装好
命令行执行pip install pyqt5,缺设计器再补一句pip install pyqt5-tools。装完在Python的Scripts目录里一般能找到designer,命令行输pyqt5-tools designer也能直接唤出可视化设计器,拖几个按钮输入框就有个界面雏形了。
手写一个最小窗口
先跑通最小结构,为了省行数写成一行,用分号分隔:
import sys; from PyQt5.QtWidgets import QApplication, QWidget, QPushButton; app = QApplication(sys.argv); w = QWidget(); w.resize(300, 200); btn = QPushButton('点我', w); btn.clicked.connect(lambda: print('按钮被点了')); w.show(); sys.exit(app.exec_())btn.clicked.connect(后面接的那个函数,就是槽:按钮发出clicked信号,connect把它绑到对应函数上,一点就执行。拆成多行文件时,用def定义一个普通函数再connect也一样。
拖控件适合出原型
Designer里把QPushButton、QLineEdit、QComboBox拖到窗体上,用垂直布局、栅格布局排整齐,保存成.ui文件,再用pyuic5 -o ui_demo.py demo.ui转成Python代码,业务逻辑写在另一个文件里import它。这样改界面不动逻辑,分工清爽。
几个常踩的坑
- 布局别用绝对坐标硬摆,窗口一拉伸就乱,QVBoxLayout和QGridLayout才是正路
- 中文变问号多半是编码问题,代码文件保存成UTF-8
- 窗口不弹出来,先检查是不是忘了w.show()或者app.exec_()
- pip装不上先看Python版本,太老的版本pyqt5不收
给个实在建议:小工具用Designer拖完转代码最省事,交互复杂了再考虑手写布局或QML。控件参数不用背,用哪个查哪个,做上两三个项目自然就熟了。