PyQt5 继承pyuic生成的程序

已完成工作

  • 我们已经完成了pyqt5在pycharm上的配置,即在extra tool中添加qt designer启动工具和pyuic工具,配置教程

  • 我们使用qt designer尝试画了一个界面
    在这里插入图片描述

  • 使用pyuic工具将ui文件转换成py文件,在下述代码中,我们得知这个按钮的命名为“pushButton”, Test内容为“这是一个按钮”

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'myUI.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# 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(363, 238)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout.setObjectName("verticalLayout")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
        self.pushButton.setSizePolicy(sizePolicy)
        self.pushButton.setObjectName("pushButton")
        self.verticalLayout.addWidget(self.pushButton)
        MainWindow.setCentralWidget(self.centralwidget)

        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", "这是一个按钮"))

目的

我们已经得到了myUI.ui文件和myUI.py文件,但只依靠qt designer文件是无法完成我们的其他需求的,而在myUI文件上面做修改的话,假如修改了ui文件重新生成py文件,会覆盖我们做的修改。
我们利用继承的想法,创建一个新的类,继承myUI.py文件中的Ui_MainWindow类,在新类进行开发,就能避免重新使用pyuic工具覆盖myUI.py文件的问题。

做法

  • 创建一个新的py文件,创建一个新类继承Ui_MainWindow类,代码如下
from myUI import Ui_MainWindow
from PyQt5.QtWidgets import QMainWindow, QApplication

class testUI(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(testUI, self).__init__(parent)
        self.setupUi(self)
        
		# 下述为我们对该界面进行的修改
        self.pushButton.setText("新的文本")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    MainWindow = testUI()
    MainWindow.show()
    sys.exit(app.exec_())
  • 我们修改了按钮pushButton的文本,改为“新的文本”,结果如下
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值