0

当我单击一个按钮时,我想打开一个新窗口(其中包含一个自定义进度条,然后在达到 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。在 PyQt 的第二个线程中打开子对话框的正确方法是什么?. 最好的方法是什么?

4

0 回答 0