退出时出现PyQt 5错误

退出GUI时出现错误:

Error: “python.exe has stopped working”

当我使用topmenu和工具栏退出选项退出时,会发生这种情况.当我关闭右上角“ X”上的程序时,也会发生这种情况.

但是,当我评论这一行时:

self.mainToolBar.addAction(exitAction)

右上角的“ X”不会出现此错误.

对于工具栏和顶部菜单上的退出选项,我使用的是:

exitAction.triggered.connect(qApp.quit)

遵循代码:

class Example(QMainWindow):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):               
        self.topmenu()
        self.toolbar()

        self.resize(800, 600)    
        self.setWindowTitle('Example')
        self.setWindowIcon(QtGui.QIcon('test.gif'))    
        self.show()

    def topmenu(self):
        #Buttons
        exitAction = QAction(QtGui.QIcon('plus.gif'), '&Exit', self)        
        exitAction.setShortcut('Ctrl+Q')
        exitAction.triggered.connect(qApp.quit)

        #Create MenuBar
        menubar = self.menuBar()
        #Add options
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)

    def toolbar(self):
        exitAction = QAction(QtGui.QIcon('plus.gif'), 'Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setToolTip("Exit")
        exitAction.triggered.connect(qApp.quit)

        self.mainToolBar = QToolBar(self)
        self.mainToolBar.setObjectName("mainToolBar")
        self.addToolBar(Qt.LeftToolBarArea, self.mainToolBar)
        # Line is giving the stop problem
        self.mainToolBar.addAction(exitAction)

    def main():    
        app = QApplication(sys.argv)
        ex = Example()
        sys.exit(app.exec_())       

    if __name__ == '__main__':
        main()    

我该如何解决?

解决方法:

我已经做了类似的事情:QtGui.qApp.quit(),在您的情况下:

exitAction.triggered.connect(QtGui.qApp.quit())

如果错误仍然存​​在,请尝试像这样覆盖closeEvent:

def closeEvent(self, event):
    QtGui.qApp.quit()
    event.ignore()

我希望这有帮助.

上一篇:python-如何在QTabWidget中设置可移动选项卡的样式


下一篇:为什么QtGui.QSound根本不播放任何内容?