在另一个 class、python 中调用方法

Invoke method in another class, python

我现在对 Python 不是很了解。但在我看来,我有一个非常简单但无法搜索的问题。

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
    MainWindow.setObjectName("MainWindow")
    MainWindow.resize(659, 600)
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    ...Code Omitted...
    self.label = QtWidgets.QLabel(self.centralwidget)
    self.label.setGeometry(QtCore.QRect(190, 370, 391, 31))
    self.label.setObjectName("label")
    self.label.setFont(QtGui.QFont("Arial",20))
    self.label.setStyleSheet("color:white")
    ...Code Omitted...
    MainWindow.setStatusBar(self.statusbar)
    ...Code Omitted...
    self.retranslateUi(MainWindow)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def AddTextToString(self, text123):
        _translate = QtCore.QCoreApplication.translate
         self.label.setText(_translate("MainWindow",text123))

class MyThread(QThread):
...Code Omitted...
    def run(self):
        ...Code Omitted...
        Ui_MainWindow().AddTextToString("Hello Word")

我想做的就是从另一个 class 调用一个方法,并从另一个 class 中的另一个方法传递变量。

AttributeError: 'Ui_MainWindow' 对象没有属性 'label'

首先,变量 self.label 被初始化一次 setupUI 方法被调用,而不是在 __init__ 中,所以你应该在 Ui_MainWindow 初始化之后调用 setupUI 方法

其次,您不能调用 Ui_MainWindow().AddTextToString("Hello Word"),因为 AddTextToString 不是静态方法,它会修改 class 变量..

您需要像 self.ui_window = Ui_MainWindow() 一样创建 Ui_MainWindow 的对象并调用 self.ui_window.AddTextToString("Hello World")