1
在我的應用程序中,我調用了一個外部模塊,它產生了一些線程,做了一些事情,然後返回一個值。我試圖讓QMessageBox在之前顯示,在之後QLabel更新這是完成的,但我很難過。代碼去(上的按鈕從QObject.connect調用)是這樣的:PySide QWidget立即更新
def _process(self):
self._message_box.show()
for i in range(3):
rv = external_module_function_with_threads() // blocking function call
label = getattr(self, "label%d" % (i + 1))
label.setText(rv)
當我點擊按鈕,調用該函數時,循環完成後,消息框只顯示。標籤只在循環完成後纔會更新。我嘗試在循環中調用label.repaint(),但似乎所做的只是使消息框更早顯示(但沒有文本)。
我知道我沒有違反「主線程之外的GUI操作」規則(...對嗎?),那麼有沒有辦法強制更新?