You need to enable JavaScript to run this app. PyQt5关闭对话框时同步关闭主窗口问题该如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

PyQt5关闭对话框时同步关闭主窗口问题该如何解决?

问题根因
  • 你的代码在open_dialog函数内重复创建了QApplication实例,而PyQt应用全局仅允许存在一个QApplication实例,重复实例化会导致事件逻辑异常
  • 对话框执行结束后,新创建的QApplication实例的事件循环会退出,触发全局应用关闭逻辑,因此主窗口会跟着对话框同步关闭
修复方法
  1. 直接删除open_dialog函数内创建QApplication、设置全局样式的两行代码,全局样式请统一在主程序入口初始化QApplication的位置设置
  2. 建议给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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 10:09:03