有没有办法检测当前执行是否在 QDialog.exec() 的中间?
我是 DreamPie 的作者,这是一个 Python shell,它允许您在显示 Qt GUI 时运行 Python 代码。它通过运行 Qt 事件循环 1/10 秒,然后检查是否需要执行任何 Python 命令来实现。事件循环由 QTimer 停止,QTimer 在超时后调用 QApplication.quit()。
但是,如果 QDialog.exec() 处于事件状态,我不想调用 QApplication.quit(),因为它会破坏代码。当前的解决方案是通过检查 QApplication.activeModalWidget() 是否为 None 来检查是否有模式对话框处于事件状态。但是,我目前有一个模式对话框,它不使用 QDialog.exec() 运行,并且它无缘无故地阻止 Python 命令。
有没有办法只有在没有被QDialog.exec()递归调用时才退出事件循环?
谢谢!
最佳答案
您可以使用QDialog.isVisible
检查您的对话框是否可见。通常,模态对话框仅在执行时可见。
关于qt - 如何检测 QDialog.exec() 是否处于事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21458268/