用“所见即所得”的QtDesigner可以很方便地做出想要的软件界面。
只需要:
- 用 QtDesigner 画界面
- 用 pyuic 转换 ui 文件为 py 文件
- 应用 py 文件到主程序中
第一步 安装Qt配套工具
🔨 安装方法:pip install pyqt5-tools
pyqt5-tools
中包含了QtDesigner、pyuic、pyrcc等一系列工具。
pyuic
命令可将QtDesigner生成的 *.ui
文件转换成 py
文件。
pyrcc
命令可将图片、音频等资源打包成py文件。这个步骤非必需,但很实用。
QtDesigner的路径:"Python\Lib\site-packages\pyqt5-tools\designer.exe"
pyuic的路径:"Python\Scripts\pyuic5.exe"
pyrcc的路径:"Python\Scripts\pyrcc5.exe"
第二步 用QtDesigner画UI
这一步简单明了,可以 为所欲为 自由发挥,用鼠标把左边栏的控件拖到中间的界面里。最后保存为 *.ui
文件。
QtDesigner效果图
第三步 生成py文件
🔨 用 pyuic
命令转换:pyuic5 demo.ui -o demo.py
这里生成的 "demo.py" 就是我们需要的界面文件,大概是这样子的:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(960, 640)
...
这个文件不要修改,因为每运行一次 pyuic 它都会重新生成一次。要改界面的话就在QtDesigner里面改,或者在你的主程序文件中改。
第四步 应用
在你的主程序文件 main.py 中可以这样写:
from PyQt5 import QtWidgets
from demo import Ui_MainWindow
app = QtWidgets.QApplication([])
win = QtWidgets.QMainWindow() # 先创建一个QMainWindow
Ui_MainWindow().setupUi(win) # 再用它的方法装饰我们
win.show()
app.exec_()
或者这样:
from PyQt5 import QtWidgets
from demo import Ui_MainWindow
app = QtWidgets.QApplication([])
class Main(QtWidgets.QMainWindow, Ui_MainWindow): # 把它继承过来
def __init__(self):
super().__init__()
self.setupUi(self) # 然后自己打自己
main = Main()
main.show()
app.exec_()
第1种方法比较简单,但是扩展和封装不如第2种。
运行就能看到效果了。
后话
- 如果你在 QDesigner 中使用了资源文件
res.qrc
,那么pyuic5
命令默认生成的 py 文件最后一行将是import res_rc
,所以建议加上--resource-suffix
选项去掉后面的_rc
。
pyuic5 demo.ui --resource-suffix "" -o demo.py
- 如果 qrc 文件不在同一目录下,比如需要
from ui import res
,那么可以用--import-from
选项。
pyuic5 demo.ui --import-from "ui" -o demo.py
- 如果要做成一个 bat 脚本,把 ui 文件拖上来就能生成 py 文件,可以这样写:
pyuic5 %~nx1 --import-from "ui" --resource-suffix "" -o %~n1.py