gpt4 book ai didi

python - 如何确保 QProgressDialog 在 PyQt 中显示

转载 作者:行者123 更新时间:2023-11-28 21:57:29 25 4
gpt4 key购买 nike

有时我的 QProgressDialog 显示,有时它根本不显示(好像没有调用 processEvents)。 processEvents() 命令是否存在任何可能导致 QProgressDialog 在某些情况下不显示的工件?

我的问题很笼统,因为我还不能在我的代码中找出问题所在。但是,我注意到当我使用配置解析器访问文本文件时,我的 QProgressDialog 没有显示它。解决方法是在文件关闭后执行 time.sleep()(可能是为了确保流程完成,然后 processEvents 将开始显示 QProgressDialog)。

如果有帮助,这是我将 QProgressDialog 作为生成器运行的代码:

def progress_dialog(self, data, label, window_title, stop_label, capture_bar=False):
bar = QProgressDialog(label, stop_label, 0, len(data))
if capture_bar: self.prog_bar = bar
bar.setWindowTitle(window_title)
for k, d in enumerate(data):
QCoreApplication.instance().processEvents()
if bar.wasCanceled():
raise GeneratorExit
# set the next value beyond the start of 0
bar.setValue(k+1)
# again process events to draw the new label and value
QCoreApplication.instance().processEvents()
yield(d)
raise StopIteration

再次抱歉,我没有孤立问题的完整代码片段(而且完整代码太大了)。我想我正在寻找的是为什么要检查 processEvents() 命令是否正在执行其工作(因为显然我正在调用它,但它卡在其他进程上而不是显示对话框)。

编辑:

根据此支持请求,执行“bar.show()”命令将强制显示进度条。

http://redmine.smar.fi/issues/265

我将等待几周并确保这是一个有保证的修复,然后再将其作为答案发布。

最佳答案

如果您需要显示一个 QProgessDialog 而不管进程的持续时间,请使用其 setMinimumDuration值为 0 的方法。根据文档,默认最小值为 4000 毫秒。

关于python - 如何确保 QProgressDialog 在 PyQt 中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19760001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com