应用程序在隐藏时关闭,我关闭模式对话框

时间:2017-09-10 17:27:20

标签: python qt pyqt qt5 pyqt5

我正在开发一个应用程序,它会在很多时候“在托盘中运行”,并向用户显示对话框(这些对话框是模态的)

我遇到的问题是当用户关闭对话框(使用accept()reject())而主窗口(模态对话框的父级)被隐藏时,整个应用程序是闭合!

无模式对话框没有问题

我现在使用的解决方法是首先在父窗口(主窗口)上调用show(),然后才关闭模态对话框

还有另一种更好的方法可以解决或避免这个问题吗?或者我采用的方法是否已经采用了解决此问题的好方法?

我正在使用PyQt 5.7.1(与Qt版本相同)并且正在使用Lubuntu 16.04 64位

感谢帮助!

1 个答案:

答案 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_())