PyQt5:如何将变量传递给类?

Posted

技术标签:

【中文标题】PyQt5:如何将变量传递给类?【英文标题】:PyQt5: How to pass a variable to a class? 【发布时间】:2018-03-29 00:05:04 【问题描述】:

我正在 pyqt5 中构建一个小实用程序,并尝试将一个变量传递给另一个类 ui 文件。

主界面文件

self.showError(errorMessage) 

如何将“errorMessage”传递给这个类?我应该这样通过吗? 类 Ui_Error(object, errorMessage):

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Error(object):
    def setupUi(self, Error):
        Error.setObjectName("Error")
        Error.resize(577, 245)
        Error.setModal(True)
        self.textBrowser = QtWidgets.QTextBrowser(Error)
        self.textBrowser.setGeometry(QtCore.QRect(30, 20, 521, 151))
        self.textBrowser.setOverwriteMode(False)
        self.textBrowser.setObjectName("textBrowser")
        self.pushButton = QtWidgets.QPushButton(Error)
        self.pushButton.setGeometry(QtCore.QRect(200, 190, 161, 31))
        font = QtGui.QFont()
        font.setPointSize(14)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(Error)
        self.pushButton.clicked.connect(Error.close)
        QtCore.QMetaObject.connectSlotsByName(Error)

    def retranslateUi(self, Error):
        _translate = QtCore.QCoreApplication.translate
        Error.setWindowTitle(_translate("Error", "Error"))
        self.textBrowser.sethtml(_translate("Error", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li  white-space: pre-wrap; \n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:16pt;\">" + errorMessage + "</span></p></body></html>"))
        self.pushButton.setText(_translate("Error", "Close"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Error = QtWidgets.QDialog()
    ui = Ui_Error()
    ui.setupUi(Error)
    Error.show()
    sys.exit(app.exec_())

【问题讨论】:

提供minimal reproducible example 【参考方案1】:

您应该将您的类(在本例中为Ui_Error)设置为在初始化时接受参数。这是通过类的__init__ 函数完成的。所以你的类应该这样声明:

class Ui_Error:
    def __init__(self, object, error_message):
        # Whatever you want to do with object and error_message

您可以在here获取更多课程信息。

【讨论】:

太棒了。我忘了我不能将变量传递给一个类,但需要一个构造函数。

以上是关于PyQt5:如何将变量传递给类?的主要内容,如果未能解决你的问题,请参考以下文章

如何将变量传递给连接到按钮pyqt5 python的函数[关闭]

c# 将变量传递给类

如何将对象数据类型传递给类或函数?

您如何将 main 中创建的实例传递给类?

Kivy 将变量传递给类中的函数

如何将值从另一个文件或命令提示符传递给类