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操作”规则(...对吗?),那么有没有办法强制更新?