安装:
直接使用pip安装:
pip install PyQt5==5.8.2
pip install pyqt5-tools
安装后发现问题:pyqt5-tools中找不到designer.exe文件
所以直接在pycharm中下载QtDesigner,完成配置
参考:
PyCharm安装配置Qt Designer+PyUIC教程
pyqt5-tools下没有qtdesigner ?
使用:
使用Qt Designer创建了测试文件test.ui
使用PyUIC将其转化为py文件时出现错误:
Error: one input ui-file must be specified
后来发现是Arguments字段没填导致;
补充上:
Arguments: $FileName$ -o $FileNameWithoutExtension$.py
之后成功将ui文件转化为py文件:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'test.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(330, 300, 93, 28))
self.pushButton.setObjectName("pushButton")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(320, 160, 101, 51))
self.label_2.setObjectName("label_2")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
self.label_2.setText(_translate("MainWindow", " 标签"))
然而,此时之间运行这个转换好的Python文件是无法显示任何窗口的。因为这个Python文件只有定义主窗口以及其控件的代码,并没有程序入口的代码。故需要编写一个主程序入口。
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication
from test import Ui_MainWindow
class my_ComboBox(Ui_MainWindow):
def __init__(self,mainWindow):
super().__init__()
self.setupUi(mainWindow)
self.initUI()
def initUI(self):
pass
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWindow = QMainWindow()
form = my_ComboBox(mainWindow)
mainWindow.show()
sys.exit(app.exec_())
使用主程序就可以把界面跑起来。
参考: python PYQT5编写UI画面并实现前后台分离.
Qt Designer的具体使用:PyQT5 之 Qt Designer 介绍与入门.