【发布时间】:2018-08-10 16:17:43
【问题描述】:
也许是一个愚蠢的问题,因为我对 PyQt 还很陌生,但是...
我从 QtDesigner 生成了一个主窗口 (QMainWindow) 对话框并添加到信号/插槽连接中
self.dlg_ui.quit_button.clicked.connect(self.quit)
self.dlg_ui.actionQuit.triggered.connect(self.quit)
注意:quit_button 是一个 QPushButton 对象,而 actionQuit 是一个 QAction 对象
slot self.quit 会打开一个 QtWidgets.QMessageBox.question 对话框,该对话框设置为提供带有 yes/no/cancel 响应的文件保存,但该对话框的功能因调用位置而异。
如果由 actionQuit.triggered 调用,对话框会执行应有的操作,但如果由 quit_button.clicked 调用,则对话框会立即关闭主窗口。
由于它们都调用相同的代码,我不知道为什么 QPushButton.clicked 信号会导致主窗口关闭。
非常感谢您在哪里开始寻找任何帮助。
【问题讨论】:
-
可能是矩阵中的故障。大声笑,老实说,这听起来很疯狂,我们需要查看更多代码
-
好的,谢谢。我生成了一个带有单个菜单项和一个按钮的简单 MainWindow,并构建了单个 Python3 脚本来运行它,一切都按预期工作。显然我在某处做了一些愚蠢的事情,我将不得不回溯我的代码。由于我的代码是模块化的,所以当我发现问题出在哪里时,我必须对其进行去模块化、调试和重新模块化。如果结果证明为其他人提供有用的信息(一个 GOTCHA),我会发布我的发现。
标签: python pyqt5 signals-slots qt-designer