Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt5 QMessageBox对话框从QPushButton关闭主窗口,但不关闭QAction_Python_Pyqt5_Signals Slots_Qt Designer - Fatal编程技术网

Python PyQt5 QMessageBox对话框从QPushButton关闭主窗口,但不关闭QAction

Python PyQt5 QMessageBox对话框从QPushButton关闭主窗口,但不关闭QAction,python,pyqt5,signals-slots,qt-designer,Python,Pyqt5,Signals Slots,Qt Designer,也许是个愚蠢的问题,因为我对PyQt还不太熟悉,但是 我已经从QtDesigner生成了一个主窗口(QMainWindow)对话框,并添加了信号/插槽连接 self.dlg_ui.quit_button.clicked.connect(self.quit) self.dlg_ui.actionQuit.triggered.connect(self.quit) 注意:quit_按钮是QPushButton对象,actionQuit是QAction对象 slot self.quit打开一个qtwi

也许是个愚蠢的问题,因为我对PyQt还不太熟悉,但是

我已经从QtDesigner生成了一个主窗口(QMainWindow)对话框,并添加了信号/插槽连接

self.dlg_ui.quit_button.clicked.connect(self.quit)
self.dlg_ui.actionQuit.triggered.connect(self.quit)
注意:quit_按钮是QPushButton对象,actionQuit是QAction对象

slot self.quit打开一个qtwidts.QMessageBox.question对话框,该对话框设置为提供文件保存和yes/no/cancel响应,但该对话框的功能因调用位置而异

如果由actionQuit.triggered调用,则对话框将执行其应执行的操作,但如果由quit_按钮调用,则单击对话框会立即关闭主窗口

由于它们都调用相同的代码,我不知道为什么QPushButton.clicked信号会导致主窗口关闭


如果您能从何处开始查找,我将不胜感激。

经过大量的工作,首先创建一个简单的ui版本,让所有内容都能正常工作,然后慢慢地从损坏的ui中添加代码,一点一点地,我终于找到了问题的根源

结果它出现在由QtDesigner创建的ui文件中——这几乎是我添加到测试脚本中的最后一个东西,该脚本是自动生成的,我认为故障更可能出现在我自己的代码中


在QtDesigner中,我添加了button.clicked和action.triggered到MainWindow.close()之间的连接。一旦我在QtDesigner中删除了这些链接并重新生成了ui文件,菜单操作和按钮都会正常工作。

您必须提供一个可能是矩阵中的故障。哈哈,不,老实说,这听起来很疯狂,我们需要看更多的代码好的,谢谢。我生成了一个简单的主窗口,只有一个菜单项和一个按钮,并构建了一个Python3脚本来运行它,一切正常。显然,我在某个地方做了一些愚蠢的事情,我将不得不回溯我的代码。由于我的代码是模块化的,我必须对其进行反模块化、调试,并在找到问题所在时重新模块化。如果它能为其他人提供有用的信息(明白了),我会发布我的发现。