PyQt5关闭对话框时同步关闭主窗口问题该如何解决?
问题根因
- 你的代码在
open_dialog函数内重复创建了QApplication实例,而PyQt应用全局仅允许存在一个QApplication实例,重复实例化会导致事件逻辑异常 - 对话框执行结束后,新创建的
QApplication实例的事件循环会退出,触发全局应用关闭逻辑,因此主窗口会跟着对话框同步关闭
修复方法
- 直接删除
open_dialog函数内创建QApplication、设置全局样式的两行代码,全局样式请统一在主程序入口初始化QApplication的位置设置 - 建议给
QDialog指定父对象为当前主窗口,符合Qt父子窗口的生命周期管理逻辑,同时对话框默认会显示在主窗口上层
修改后的代码参考:
def open_dialog(self): # 仅保留对话框相关逻辑,不要重复创建QApplication dialog = QtWidgets.QDialog(parent=self) dialog.ui = Form() dialog.ui.setupUi(dialog) # 如果需要单独给对话框设置fusion样式,加下面这行即可,不需要新建QApplication # dialog.setStyle('fusion') dialog.exec_()
内容的提问来源于stack exchange,提问作者farhan jatt
相关产品推荐
相关产品推荐

