退出时出现PyQt 5错误

时间:2013-11-20 17:12:06

标签: python qt pyqt pyqt5

退出GUI时出错:

  

错误:“python.exe已停止工作”

当我使用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()    

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

我对PyQt比较陌生,但不会这样做:

exitAction.triggered.connect(self.close) #Fires closeEvent()

刚刚在我的机器上测试过,它干净利落地退出。

请参阅docs

答案 1 :(得分:0)

我做过同样的事情:QtGui.qApp.quit(),在你的情况下:

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

如果错误仍然存​​在,请尝试覆盖closeEvent,如下所示:

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

我希望这会有所帮助。