环境准备
- python 3.11—————编程语言
- PyQt5, pyqt5_tools——–python库
- Qt Designer—————GUI设计工具
步骤
- 安装环境
【1】安装python
下载python下载安装包,双击安装。
【2】安装PyQt5, pyqt5_tools
pip install PyQt5 PyQt5-tools -I https://pypi.tuna.tsinghua.edu.cn/simple
【3】安装Qt Designer 下载Qt Designer下载安装包,双击安装。
- 操作
【1】用Qt Designer设计界面 参考这里,设计界面。
使用 Qt Designer 创建一个基于 QWidget 的界面程序,然后给窗体内增加一个按钮控件。具体如何给窗体增加控件,如下图所示。
按 Ctrl+s 键或者点击 Qt Designer 软件的 File 菜单的 Save As 选项,把我们设计的界面文件保存到项目目录下,如上例我们保存到项目 pyqt5project 目录下,保存名称为 mytest_1.ui,注意使用 Qt Designer 设计的界面文件后缀名是 .ui。
使用 Qt Designer 工具,不单单可以设计界面,还可以设计信号槽,下面我们就使用 Qt Designer 给我们的按钮设计一个信号槽。
按照上面步骤操作完成后,点击 ok 按钮,就会返回到上一个对话框,我们对话框的右边 出现了 doclick(),选中后,点击 ok。到此为止,我们就成功的给按钮创建了信号槽。
【2】转换ui文件为python代码
>pyuic5 -o mytest_1.py mytest_1.ui
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'mytest_1.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# 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_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(400, 300)
self.btn_ok = QtWidgets.QPushButton(Form)
self.btn_ok.setGeometry(QtCore.QRect(180, 150, 56, 17))
self.btn_ok.setObjectName("btn_ok")
self.retranslateUi(Form)
self.btn_ok.clicked.connect(Form.doclick) # type: ignore
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.btn_ok.setText(_translate("Form", "click"))
【3】编辑逻辑code 在其中, 引用【2】中的界面code,并保存。如将逻辑代码保存为domytest_1.py。
并和刚刚生成那个mytest_1.py,放在同一个目录里。
import sys
import mytest_1 # import UI file
from PyQt5.QtWidgets import QWidget, QApplication, QMessageBox
class doMyTest_1(QWidget):
def __init__(self):
super().__init__()
self.ui = mytest_1.Ui_Form() # call UI object
self.ui.setupUi(self) # link me
self.show()
def doclick(self):
QMessageBox.information(None, "test info slot!", "my python")
app = QApplication(sys.argv)
ex = doMyTest_1()
app.exec()
直接在代码编辑器里面右键运行domytest_1.py。
注意:
用PyQt5实现上述code。
如果用PyQt6实现上述代码,会有错误发生:
File "c:\d_disk\RenesasMCUHWM\RCar\Gen4\R-Car_S4\Application_Notes_for_HWM\gateway_switch\GatewaySettingTool\code\python_Qt\mytest.py", line 16, in setupUi
self.btn_ok = QtWidgets.QPushButton(parent=Form)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: arguments did not match any overloaded call:
QPushButton(parent: typing.Optional[QWidget] = None): argument 'parent' has unexpected type 'doMyTest'
QPushButton(text: str, parent: typing.Optional[QWidget] = None): not enough arguments
QPushButton(icon: QIcon, text: str, parent: typing.Optional[QWidget] = None): not enough arguments
PS C:\d_disk\RenesasMCUHWM\RCar\Gen4\R-Car_S4\Application_Notes_for_HWM\gateway_switch\GatewaySettingTool\code>