首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态更新QLabel - pyqt

动态更新QLabel - pyqt
EN

Stack Overflow用户
提问于 2017-01-13 03:02:57
回答 1查看 904关注 0票数 1

我有点问题。我正试着制作一个监控软件来监控一些电压和其他东西。我使用Qt4Designer和pyqt来创建我的UI。

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

单击go按钮->启动中心->连接到设备并返回一个信息数组->使用信息,并在各种QLabels上显示适当的值。

我正在使用QLabels (这里的数据)设置self.label.setText。

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

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

我非常肯定,问题是UI只在没有处理的情况下更新。但我不太清楚如何在每次迭代之后强制所有QLabels更新。我已经尝试过self.label.repaint(),但这没有起到任何作用。

有人能帮忙吗?

EN

回答 1

Stack Overflow用户

发布于 2017-01-13 04:06:51

我猜测的是,您可能会将所有任务(3-4次集线器模块调用、time.sleep和QLabels setText)放入UI更新函数,而不是将长期运行的任务打包到单独的线程中。

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41626762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档