QLabel setText在运行其他方法之前不会立即显示文本

时间:2010-12-22 15:32:08

标签: qt pyqt

我有一个基本标签,应该向用户表明程序正在搜索目录几秒钟。所以它就像......

self.label.setText(QString("Searching..."))
# method to search directories goes here
self.label.setText(QString("Search Complete"))

我的问题是标签从不显示“正在搜索...”。执行总是似乎直接跳转到运行扫描目录的方法,然后在扫描目录的方法完成后标签文本设置为“搜索完成”。

如果有人能够解释为什么会这样,或者建议更好的方法来解决问题,我将不胜感激。

非常感谢

2 个答案:

答案 0 :(得分:21)

您的“搜索目录的方法”阻止了GUI,因此QLabel无法更新文本。您可以使您的搜索例程异步或轻松实现并强制QLabel自行更新:

self.label.setText(QString("Searching..."))
self.label.repaint()
# method to search directories goes here
self.label.setText(QString("Search Complete"))

答案 1 :(得分:1)

添加包含:

#include <qapplication.h>

让Qt处理事件:

self.label.setText(QString("Searching..."))
qApp->processEvents();

注意:repaint()不是必需品。