Pyqt5 Pythonコードの単純な進捗状況ラベルを作成し、関数がたくさんの機能を果たすループの繰り返しごとに更新しようとしています。私が更新したいラベルは "status_label_counter"です。以下のコードは、ラベルを作成する部分と、私が述べた機能を使用したい場所を示しています。Pythonのランタイム進行状況(ステータスバーなど)
#initialisation code, etc...
self.status_label_counter = QLabel()
self.status_label_from = QLabel(' from: ')
self.status_label_total = QLabel()
status_hbox = QHBoxLayout()
status_hbox.addStretch()
status_hbox.addWidget(self.status_label_counter)
status_hbox.addWidget(self.status_label_from)
status_hbox.addWidget(self.status_label_total)
status_hbox.addStretch()
#bunch of other code...
def create_ics(self):
counter = 0
self.status_label_total.setText(str(len(self.groups)))
for group in self.groups:
#does a bunch of stuff inside
group_manager.create_calendar_for(self.rows, group, self.term)
counter += 1
#for console output
print('iteration: ', counter)
#trying to update status counter
self.status_label_counter.setText(str(counter))
問題は、ネストされた関数でループが完了したときに両方のラベルの更新が表示されることです。 "create_ics"を呼び出すボタンをクリックすると、関数ウィンドウが約5秒間非アクティブになり、コンソールのログに反復回数が表示されますが、何も表示されません。
(QApplication.processEventsを試してみてください)ループ – eyllanesc
の内側に、私はまた、処理の時間は、ほぼ倍増したが、私はそれがこの特定のケースで動作することがわかり、私は)(QApplication.processEventsを使用し、それが働いたQThread – eyllanesc