我正在为管理一些模拟的Python项目设计GUI。由于模拟需要一些时间,我希望有一个窗口告诉用户等待,在模拟开始时弹出。
目前,代码就像
def start_simulation(self):
self.calculation_running_dialog.show()
heavy_function_call(self)
self.calculation_running_dialog.hide()
但是,我面临以下问题:当模拟开始时,窗口会出现,但在Ubuntu中使用透明的主体进行渲染,在Windows中使用空(白色)主体进行渲染。仅在重函数调用终止后,窗口将正确呈现。 如何在模拟开始前强制窗口正确显示?
最近,我在这里问了一个类似的问题:PyQT force update textEdit before calling other function。
为此,repaint()
函数证明是解决方案。但对于当前的问题,self.calculation_running_dialog.repaint()
和self.calculation_running_dialog.update()
或self.calculation_running_dialog.textLabel.repaint()
都无法解决问题。
有什么建议吗?