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

Fedora系统下QFileDialog.getOpenFileName为何忽略dir参数?

Fedora下DNF安装的PyQt/PySide中QFileDialog.getOpenFileName初始目录参数失效问题

问题背景

在PyQt5、PyQt6、PySide2等Qt绑定框架中,通常可通过QFileDialog.getOpenFileName的第三个参数指定打开文件对话框的初始目录:

QtWidgets.QFileDialog.getOpenFileName(
    self,
    'Open file',
    '/home/michael/last_path',
)

但在Fedora新版本(从Fedora 33到Fedora 37搭配Gnome 43.3均存在)中,该参数会被静默忽略,且无论Wayland还是X11环境都存在此问题。奇怪的是getSaveFileName的初始目录参数仍能正常工作,同时其他基于Python&Qt的软件(如Veusz)也出现相同情况。

已确认的关键信息

  • 虚拟环境中通过pip安装的PyQt5/PyQt6版本,该功能完全正常;仅通过dnf安装的系统级版本出现问题。
  • 排除了Wayland/X11环境差异的影响,两种环境下问题均存在。

原因推测

该问题大概率是Fedora的PyQt/PySide打包配置问题:
Fedora在打包Qt相关软件时,可能对Qt的文件对话框后端做了定制修改(比如强制使用GTK原生对话框),导致getOpenFileName的初始目录参数没有正确传递到原生对话框组件;而getSaveFileName的参数传递逻辑未受此修改影响,因此功能正常。

反馈渠道

  1. Fedora Bugzilla:针对python-qt5、python-qt6、python-pyside2等相关包提交bug报告,详细说明环境版本、复现步骤及对比测试结果(pip vs dnf版本的差异)。
  2. Fedora Qt SIG:参与Fedora专门负责Qt相关软件维护的兴趣小组讨论,反馈该问题并寻求技术支持。

修复方向

临时 workaround

强制使用Qt自带的非原生文件对话框,绕过Fedora定制的原生对话框逻辑:

QtWidgets.QFileDialog.getOpenFileName(
    self,
    'Open file',
    '/home/michael/last_path',
    options=QtWidgets.QFileDialog.DontUseNativeDialog
)

长期修复

  1. 提交bug后跟进Fedora官方的修复进度,若已有相关bug报告可加入测试,帮助验证补丁。
  2. 若熟悉Fedora打包流程,可自行修改对应PyQt/PySide包的.spec文件,移除可能导致参数失效的定制补丁或配置,重新编译安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:42:57