- 对.ui文件生成的代码修改: 分析启动函数
if __name__ == '__main__':
win = QApplication(sys.argv)
MainWindow = QMainWindow()
ui = Ui_MainWindow() # 正常的窗口
ui.setupUi(MainWindow )
MainWindow.show() # 显示窗口
sys.exit(win.exec_())
从main()方法中看到我们最终显示的是QDialog类创建的窗口对象,如果想要实现关闭窗口触发弹窗提示或执行一些其他方法,需要重写的是QDialog类中的closeEvent()方法,而不是重写我们创建的Ui_Dialog类的closeEvent()方法。 原理:关闭窗口时会执行类的close()方法,并触发QCloseEvent信号,进而执行closeEvent(self, QCloseEvent)方法。 添加代码如下:
class Dialog(QtWidgets.QDialog):
"""对QDialog类重写,实现一些功能"""
def closeEvent(self, event):
"""
重写closeEvent方法,实现dialog窗体关闭时执行一些代码
:param event: close()触发的事件
:return: None
"""
reply = QtWidgets.QMessageBox.question(self,
'本程序',
"是否要退出程序?",
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
QtWidgets.QMessageBox.No)
if reply == QtWidgets.QMessageBox.Yes:
event.accept()
else:
event.ignore()
- 修改启动函数
if __name__ == '__main__':
win = QApplication(sys.argv)
MainWindow = QMainWindow()
dialog = Dialog() # 创建一个QDialog窗口对象,
ui = Ui_MainWindow() # 正常的窗口
ui.setupUi(dialog) # 将布局传入QDialog窗口
dialog.show() # 显示窗口
# MainWindow.show() # 显示窗口
sys.exit(win.exec_())
评论区