どのようにそれが行われたとき、私は、このプログレスバーの近くに作るのですか

StackOverflow https://stackoverflow.com/questions/732829

  •  06-09-2019
  •  | 
  •  

質問

私は、一般的に私のための変換作業を行うには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]ボタンをクリックする前に、Pythonシェルを閉じた場合、あなたはそれをクラッシュ。)

それが失われ、フォーカスを回復する場合も、それは正しく絵を停止します。プロセスが完了するまで継続されますが、プログレスバースペースはすべて白です。私はこれを処理する方法を教えてください。

役に立ちましたか?

解決

あなたは10にあなたの最大を設定しているため、

ので、

さて、あなたのプログレスバーが100%に達してはなりません

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

のみ9まで反復されます。

プログレスバーが自動的に閉じないでください。あなたが呼び出す必要があります。

barra.hide()

あなたのループの後ます。

どんなスクリプトあなたはプログレスバーと同じスレッドであるから、このスクリプトを実行したため、

ペイントの問題としては、それは可能性があります。あなたは離れてと戻ったときので、ペイントイベントが親スクリプトの実際の処理遅れで表示されています。あなたはどちらか、定期的に「バラ」に.update()または.repaint()を呼び出すようにタイマーを設定することができます(再描画上で推奨される)(更新())の OR のあなたを実行するには、あなたのメインの処理コードを望みますPyQtはコードでも利用可能ですが、それはあなたの部分にいくつかの読み取りが必要になりますQThread、中:)

ドキュメントはQtのためですが、それは同様のPyQtに適用されます:

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top