Python 动态更新QLabel-pyqt

Python 动态更新QLabel-pyqt,python,qt,pyqt,Python,Qt,Pyqt,我有点问题。我正在尝试制作一个监控软件,可以监控一些电压和其他东西。我正在使用Qt4设计器和pyqt来创建我的UI 我的代码结构如下(每一个都是一个模块): 单击go按钮-->启动集线器-->连接到设备并返回信息数组-->使用信息并在各种QLabel上显示适当的值 我使用self.label.setText(这里的数据)设置QLabel 我现在遇到的问题是,我正在尝试让go按钮启动一个循环,该循环每隔4秒左右重复调用start hub模块(该模块将从设备获取信息,然后调用一个模块将该信息打印到Q

我有点问题。我正在尝试制作一个监控软件,可以监控一些电压和其他东西。我正在使用Qt4设计器和pyqt来创建我的UI

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

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

我使用self.label.setText(这里的数据)设置QLabel

我现在遇到的问题是,我正在尝试让go按钮启动一个循环,该循环每隔4秒左右重复调用start hub模块(该模块将从设备获取信息,然后调用一个模块将该信息打印到QLabel)

作为测试,我连续调用该函数3-4次,中间是time.sleep(4)。我发现UI仅在上次调用start hub后更新

我很确定问题在于UI只有在没有任何处理的情况下才会更新。但我不确定如何在每次迭代后强制更新所有QLabel。我尝试过self.label.repaint(),但没有任何效果


有人能帮忙吗?

我猜您可能会将所有任务(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()

我猜您可能会将所有任务(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()