Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python QMessageBox等待函数完成,然后关闭PyQt5_Python_Python 3.x_Pyqt5 - Fatal编程技术网

Python QMessageBox等待函数完成,然后关闭PyQt5

Python QMessageBox等待函数完成,然后关闭PyQt5,python,python-3.x,pyqt5,Python,Python 3.x,Pyqt5,PyQt5非常新,但我希望有一个消息框,它等待函数完成,然后在函数完成后关闭。这就是我尝试过的: msg = QMessageBox() msg.setWindowTitle("File Uploading...") msg.setText(" Please Wait... ") msg.setStandardButtons(QMessageBox.NoButton) msg.exec() Ui_MainWindow.pdfIma

PyQt5非常新,但我希望有一个消息框,它等待函数完成,然后在函数完成后关闭。这就是我尝试过的:

msg = QMessageBox()
msg.setWindowTitle("File Uploading...")
msg.setText("                Please Wait...                   ")
msg.setStandardButtons(QMessageBox.NoButton)
msg.exec()
Ui_MainWindow.pdfImageCreator(filename) #This may take a long time 
msg.done(1) #Close message box once done

但是应用程序只是打开消息框,并且从不尝试在消息框之后运行该功能,是否允许消息框打开,然后继续运行代码直到关闭?

这可以通过信号和插槽实现,但是我担心的是
pdfImageCreator
会做什么:如果你不小心,并且这个过程不是在不同的线程中完成的,它会阻塞用户界面。编辑您的问题,包括a,我们将尽力帮助您。另外,请注意,您似乎在调用一个类方法(从您的示例来看,这似乎不是一个好方法),并且您永远不应该编辑pyuic的输出来创建程序,而是将其用作导入的模块。哦,不。。。我对一般的编码是新手,尤其是PyQt5,我在pyuic文件中进行了所有编辑,它的1000多行代码都在运行我的应用程序。但一切正常,我需要做的最后一件事是修复这个问题,因为运行
pdfImageCreator
时窗口没有响应,因为它会将pdf页面转换为.png,这可能需要一些时间,具体取决于pdf的长度。别担心,这是一个常见的错误。我建议您按照上的官方文档重写代码以集成pyuic输出(第三种方法,多重继承方法,通常是最好的)。这需要一些时间,但值得付出努力;保持UI和编程分离始终是一件好事:只要您需要更改GUI中的某些内容,就只需重新构建UI文件,否则您将有大量的麻烦将更改与现有代码集成。完成后,编辑您的问题并添加pyuic输出(或UI文件)。请确保提供可复制的最小示例。这需要一些时间才能实现,但尽可能简单会大大增加人们帮助您的可能性:许多用户只是不感兴趣回答一些示例不必要且复杂的问题,需要花费太多时间来理解其背后的代码逻辑,你最终会失去得到答案的机会。非常感谢你,这个项目很快就要到期了,所以我将尝试按照你向我解释的方式进行。但这里面有很多代码,而且一开始就很有气质,我很担心会弄乱它。现在,我认为我将在long函数之前实现一条消息,然后在它完成后实现一条Done消息,这是一项非常懒惰的工作,直到我重写所有代码为止。再次感谢!