退出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()
我该如何解决这个问题?
答案 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()
我希望这会有所帮助。