动态更新QLabel - pyqt

时间:2017-01-13 03:02:58

标签: python qt pyqt

我有点问题。我正在尝试制作一个监控几个电压和其他东西的监控软件。我正在使用QT 4 Designer和pyqt制作我的UI。

我的代码结构如下(每个代码都是一个模块):

点击go按钮--->启动集线器---->连接到设备并返回一个信息数组--->使用信息并在各种QLabel上显示适当的值。

我使用self.label.setText(此处的数据)设置QLabel。

我遇到的问题现在我正在尝试让go按钮启动一个循环,重复调用启动集线器模块(然后它将从设备中获取信息,然后调用将该信息打印到QLabels的模块)每4秒钟左右。

作为测试,我连续3-4次调用该函数,其间有time.sleep(4)。我发现UI只在最后一次调用启动集线器后更新。

我很确定问题是UI只在没有处理时才更新。但是我不确定如何在每次迭代后强制所有QLabel更新。我已经尝试过self.label.repaint()但是没有做任何事情。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我猜测你可能会将所有任务(3-4次集线器模块调用,time.sleep和QLabels setText)放入该UI更新功能,而不是这样做你应该包装长期运行的任务进入一个单独的线程

import threading

def LongRunningTask(self):
    for i in range(4):
        hub_module_call        
        time.sleep(4)
        self.label.setText

def OnButton(self, event):
    # Click go button
    thread = threading.Thread(target=self.LongRunningTask)
    thread.start()