[英]How can I update an instance variable from within a called module
我認為我的答案與此答案有關,但無法完全理解。
我現在意識到我的代碼結構不是很好,但是當前的設置是:
main_run.py
app = QtGui.QApplication(sys.argv)
app.processEvents()
ui1 = new_main_ui.Ui_Form_Main()
ui1.show()
sys.exit(app.exec_())
new_main_ui
class Ui_Form_Main(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.setupUi(self)
...etc...
此類中的Qlabel對象在單擊UI上的按鈕時會更新其文本。
在new_main_ui中,有一個調用另一個模塊( sqr_pull.py )的功能。 在sqr_pull.py進行到一半時,我想更新UI中的Qlabel,但是我不知道如何在不獲取以下信息的情況下引用UI實例(ui1):
NameError: name 'ui1' is not defined
我嘗試使用sys.modules[__name__]
傳遞變量,如下所示:
在main_run中 : new_main_ui.parent1 = sys.modules[__name__]
在new_main_ui中 : sqr_pull.parent2 = sys.modules[__name__]
然后在sqr_pull中嘗試使用`parent2.QLabel.setText(“ blahblahblah”)進行更改
但它再次無法識別實例名稱。 最好的方法是什么?
授予函數訪問對象的干凈方法是將該對象傳遞給函數...
# worker.py
def work(ui):
some_result = do_something()
ui.update(some_result)
other_result = do_something_else()
# ui.py
import worker
class Ui(object):
def some_action(self):
worker.work(self)
def update(self, data):
self.show_data_somewhere(data)
使用sys.modules
或其他任何東西進行黑客sys.modules
只會導致一些無法維護的混亂。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.