PyQt:如何更改包中的标签文本

时间:2017-04-21 09:42:04

标签: python python-3.x pyqt pyqt5

我的问题是: 如何从包中更改标签(或其他图形元素)? 这个想法是为了减轻我的主要计划。 谢谢!

前主程序:

#../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")

1 个答案:

答案 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")

我们正在更新传递给函数的对象。