我的问题是: 如何从包中更改标签(或其他图形元素)? 这个想法是为了减轻我的主要计划。 谢谢!
前主程序:
#../mainprogram.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets
from ui import Ui_MainWindow
from package import update
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# label from .ui -> .py
self.ui.label_1.setText("need to change this")
def update_label(self):
self.update = update.label_update()
ex package:
#../package/update.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def label_update():
self.ui.label_1.setText("no problem")
答案 0 :(得分:1)
您需要做的是将对象的实例传递给函数。考虑:
def label_update():
self.ui.label_1.setText("no problem")
在此范围内,我们不知道self
是什么,因为它尚未定义。但是,如果您通过self
:
#../mainprogram.py
class MainWindow(QtWidgets.QMainWindow):
def update_label(self):
self.update = update.label_update(self)
#../package/update.py
def label_update(obj): #obj is the object self
obj.ui.label_1.setText("no problem")
我们正在更新传递给函数的对象。