簡體   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