单击按钮时在pyqt5中使用线程打开一个窗口,打开另一个窗口时冻结GUI,关闭时恢复操作

问题描述

当我单击一个按钮时,我想打开一个新窗口(其中包含一个自定义进度条,然后在达到 100% 时关闭),然后在后台加载进度条时,我想冻结当前GUI,只有在进度条关闭后,才能继续在GUI上进行以下操作。

例如,在 GUI 上,我必须在后台进行某种操作,并且只有在进度条关闭后才能显示它们。我尝试过 time.sleep(5),但它也使进度条进程休眠,然后在几秒钟完成后,它们同时执行。

def buttonClicked(self):
    self.progressBar= ProgressBar()
    self.progressBar.show()
    # Here I want to make operations in the background and display them only after progressBar is closed
    # I tried the following:
    time.sleep(5)
    self.taskToShowSomethingOnTheGUI() <-But they execute simultaneously after the 5 sec are done

我还尝试了其他使用 QThreads 的方法,但它们似乎无法打开新窗口,因为它们会使 GUI 冻结。 我什至尝试将两种不同的方法分配给一个按钮一个一个执行,因为我想要先进度条,然后再在 GUI 上恢复其他操作。

有没有办法用线程来做到这一点?我在这里发现他们使用了 pyqt Slots。 What is the proper way of opening a child dialog in a second thread in PyQt?。哪种方法最好?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)