首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQT5在睡觉前显示标签

PyQT5在睡觉前显示标签
EN

Stack Overflow用户
提问于 2018-10-04 11:15:35
回答 1查看 492关注 0票数 0

我正在尝试为我的python代码创建一个GUI。我遇到了一个问题,在这里我想显示一个标签,上面写着“请等待”,并与此并列,我想睡眠我的代码为1.25s。然而,它没有显示标签就进入了睡眠状态。在我看来,它似乎“跳过”了.show()

下面是代码的片段:

代码语言:javascript
复制
def status_check(self):
            self.varakozas.setText("Please wait...")
            self.varakozas.show()
            time.sleep(1.25)
            sudoPassword = self.sudopassword.text()
            command = "some command"
            passtmeg = "echo '"+sudoPassword+"' | sudo -S "+command
            line = subprocess.Popen(["bash", "-c", passtmeg],stdout=subprocess.PIPE,shell=True)
            status_of = str(line.communicate()[0])
            status_of_to_log = status_of.translate({ord(translate_table): "" for translate_table in "'b"})
            logging.info('Status: '+ status_of_to_log[:-2])
            if ("xy" in status_of) or ("Starting" in status_of):
                self._status.setText("xy is running")
                self.varakozas.hide()
            else:
                self._status.setText("xy is stopped")
                self.varakozas.hide()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-04 12:36:44

正如您所说的,self.varakozas是QLabel,所以我预测它是您窗口的孩子。

如果您调用show(),Qt将只为该小部件调度画图事件,而call事件则由事件循环调用。一旦完成此方法的执行,就会执行事件循环。所以睡眠首先被称为睡眠,因为它是在范围结束之前。这是Qt事件循环环境的标准行为。

但有个解决办法。您可以通过repaint()方法手动调用画图事件。

试试这个:

代码语言:javascript
复制
def status_check(self):
            self.varakozas.setText("Please wait...")
            self.varakozas.show()
            self.repaint()
            time.sleep(1.25)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52645352

复制
相关文章

相似问题

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