運行時進度狀態(如狀態欄)我正在嘗試爲我的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
裏面我也建議使用的QThread – eyllanesc