我正在开发一个应用程序,它会在很多时候“在托盘中运行”,并向用户显示对话框(这些对话框是模态的)
我遇到的问题是当用户关闭对话框(使用accept()
或reject()
)而主窗口(模态对话框的父级)被隐藏时,整个应用程序是闭合!
无模式对话框没有问题
我现在使用的解决方法是首先在父窗口(主窗口)上调用show()
,然后才关闭模态对话框
还有另一种更好的方法可以解决或避免这个问题吗?或者我采用的方法是否已经采用了解决此问题的好方法?
我正在使用PyQt 5.7.1(与Qt版本相同)并且正在使用Lubuntu 16.04 64位
感谢帮助!
答案 0 :(得分:1)
您只需将QApplication
对象的quitOnLastWindowClosed
属性设置为False
,如下所示:
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
if not QSystemTrayIcon.isSystemTrayAvailable():
QMessageBox.critical(None, "Systray",
"I couldn't detect any system tray on this system.")
sys.exit(1)
QApplication.setQuitOnLastWindowClosed(False)
window = yourDialog()
window.show()
sys.exit(app.exec_())