在另一个 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")
我现在对 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")