我经常编写Python scipts为我做转换任务,每当我写一个需要一段时间,我用这个小进度条来检查就可以了。

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_()

我有2个问题:

我如何让它自行关闭,当它达到100% (它保持打开状态,如果你点击X按钮之前关闭蟒蛇壳你崩溃了。)

此外,当它失去,并重新获得焦点时,它停止正常画。该过程将继续,但完工进度条的空间是全白。我该如何处理呢?

有帮助吗?

解决方案

好了,因为你的最大设置为10,你的进度条不应该达到100%,因为

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

将仅遍历到9。

进度条不自动关闭。你将不得不调用

barra.hide()

后你的循环。

至于油漆的问题,很可能是因为任何脚本你运行此脚本是在同一个线程中的进度条。所以,当你切换离开和回来的油漆事件是由父脚本的实际处理延迟。您可以设置一个计时器,以定期调用.update()或.repaint()上的“巴拉”(更新()建议在重绘())你想你的主要处理代码运行在一个的QThread,这是在PyQt的代码也可用,但将需要你一些阅读:)

在文档为Qt的,但是它适用于PyQt的,以及:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top