You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何拦截QFileDialog右上角的关闭按钮(X)事件?

解决QFileDialog点击关闭按钮导致程序崩溃的问题

当你点击QFileDialog右上角的“X”按钮时,getOpenFileName会返回空字符串作为文件名(fname),后续直接调用os.path.getsize(fname)会因为传入无效路径触发报错,而你的代码既没处理用户取消选择的情况,也没正确捕获文件操作的异常,所以导致程序崩溃。

修复方案如下:

  • 先判断文件名是否为空,仅在用户选择有效文件时才执行文件大小获取逻辑
  • 将异常捕获移到文件操作代码块,针对性处理文件相关错误

修改后的代码:

dir = "hdb1/temp/"
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fname, _ = QFileDialog.getOpenFileName(self, "Open file", "/hdb1/temp/", "File type (*.pdf)", options=options)

# 用户取消选择时直接跳过后续逻辑
if fname:
    try:
        fsize = os.path.getsize(fname)
        # 这里添加获取文件大小后的业务逻辑
    except OSError as e:
        # 处理文件大小获取失败的情况,比如文件不存在、无读取权限等
        print(f"获取文件大小出错: {e}")
else:
    # 可选:添加用户取消选择的提示或处理
    print("用户取消了文件选择")

内容的提问来源于stack exchange,提问作者user17565490

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:04:54