PyQt教程(2)——用QtDesigner拖控件画窗口

用“所见即所得”的QtDesigner可以很方便地做出想要的软件界面。
只需要:

  1. 用 QtDesigner 画界面
  2. 用 pyuic 转换 ui 文件为 py 文件
  3. 应用 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 文件。

PyQt教程(2)——用QtDesigner拖控件画窗口_第1张图片
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种。
运行就能看到效果了。


后话

  1. 如果你在 QDesigner 中使用了资源文件 res.qrc,那么 pyuic5 命令默认生成的 py 文件最后一行将是 import res_rc,所以建议加上 --resource-suffix 选项去掉后面的 _rc
pyuic5 demo.ui --resource-suffix "" -o demo.py
  1. 如果 qrc 文件不在同一目录下,比如需要 from ui import res,那么可以用 --import-from 选项。
pyuic5 demo.ui --import-from "ui" -o demo.py
  1. 如果要做成一个 bat 脚本,把 ui 文件拖上来就能生成 py 文件,可以这样写:
pyuic5 %~nx1 --import-from "ui" --resource-suffix "" -o %~n1.py

你可能感兴趣的:(PyQt教程(2)——用QtDesigner拖控件画窗口)