繁体   English   中英

完成后如何关闭进度条

[英]How do I make this progress bar close when it is done

我通常会编写Python脚本来为我完成转换任务,每当我写一个需要一段时间的脚本时,我都会使用此小进度条进行检查

import sys
import time
from PyQt4 import QtGui
app = QtGui.QApplication(sys.argv)
barra = QtGui.QProgressBar()
barra.show()
barra.setMinimum(0)
barra.setMaximum(10)
for a in range(10):
    time.sleep(1)
    barra.setValue(a)
app.exec_()

我有两个问题:

我如何使其达到100%时自行关闭(它保持打开状态,并且如果在单击X按钮之前关闭python shell,则会使其崩溃。)

同样,当它失去焦点并重新获得聚焦时,它将停止正确绘画。 该过程将继续完成,但进度栏空间为白色。 我该如何处理?

好吧,因为您将“最大值”设置为10,所以进度条不应达到100%,因为

for a in range(10):
  time.sleep(1)
  barra.setValue(a)

最多只会迭代9个。

进度栏不会自动关闭。 你必须打电话

barra.hide()

在循环之后。

至于绘画问题,可能是因为您从中运行此脚本的任何脚本都与进度条位于同一线程中。 因此,当您切换回去时,绘画事件会因父脚本的实际处理而延迟。 您可以设置一个计时器定期在'barra'上调用.update()或.repaint()(建议在repaint()上使用update()), 或者您希望主处理代码在QThread中运行,这也可以在PyQt代码中可用,但这需要您自己阅读:)

该文档适用于Qt,但也适用于PyQt:

https://doc.qt.io/qt-4.8/threads.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM