也许是一个愚蠢的问题,因为我对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对象
插槽self.quit打开一个QtWidgets.QMessageBox.question对话框,设置为使用yes / no / cancel响应提供文件保存,但对话框的功能取决于调用它的位置。
如果由actionQuit.triggered调用,则对话框会执行它应该执行的操作但是如果由quit_button.clicked调用,则对话框会立即关闭主窗口。
由于他们都在调用相同的代码,我不知道QPushButton.clicked信号导致主窗口关闭的原因。
非常感谢任何从哪里开始寻找的帮助。
答案 0 :(得分:-1)
经过大量的工作,首先创建一个简单版本的ui,其中一切正常,然后慢慢地从破碎的ui中逐步添加代码,我终于找出了产生问题的原因。
原来是在QtDesigner创建的ui文件中 - 几乎是我添加到测试脚本的最后一件事,我自己生成的故障更可能出现在我自己的代码中。
在QtDesigner中,我添加了button.clicked和action.triggered之间的连接到MainWindow.close()。一旦我在QtDesigner中删除了这些链接并重新生成了ui文件,菜单操作和按钮就会正常工作。