4

私のpyqt GUIには、クリックすると長い数学計算を行う関数を実行するボタンがあります。この関数内には、次のような多くの print ステートメントがありました。

print "finished calculating task1 going on to task2"

したがって、そのような印刷ステートメントを使用することで、たとえばプログラムの進行状況を示すためにプログレスバーを言う必要はありませんでした。GUI に QTextEdit ウィジェットを追加し、その関数のすべての print ステートメントを次のように置き換えました。

MyTextEdit.append('message')

どこMyTextEditで QTextEdit ウィジェットでありmessage、関数で印刷したいメッセージです。

例:

MyTextEdit.append('finished calculating task1 going on to task2')
task2 #lengthy second task
MyTextEdit.append('finished calculating task2 going on to task3')
task3 #lengthy third task

ボタンをクリックして関数が実行されると、その関数内のすべての計算が終了し、すべてのメッセージが QTextEdit ウィジェットに追加されます。

MyTextEdit.append('message')aが実行されるたびにすぐに実行され、ウィジェットは他のすべてのメッセージの最後ではなく、その瞬間にメッセージを表示すると思いました。

私は何を間違っていますか?

この記事を読んでそうしようと思いました

4

1 に答える 1

3

それぞれの後にQCoreApplication.processEventsを呼び出すだけですappend

QCoreApplication静的メソッドでインスタンスを取得できますQCoreApplication.instance

コマンドは保留中のすべてのイベントを処理するため、実行中のタスクを終了する前に Qt に GUI を「更新」するように要求します。

于 2012-09-26T13:29:00.777 に答える