名称:PyQt6
版本:6.1.0
操作系统:Ubuntu 20.04.5 LTS
from PyQt6.QtWidgets import QFileDialog
HOME_PATH = os.getenv("HOME")
...
dir_path = QFileDialog.getExistingDirectory(
parent=self,
caption="Select directory",
directory=HOME_PATH,
options=QFileDialog.Option.ShowDirsOnly,
)
目录
和选项
不起作用。
初始化路径错误。
文件显示,我无法选择目录。
最佳答案
最初的问题主要与 PyQt6 使用 Enums 的新方式有关,它现在总是需要完整的命名空间:在 PyQt5 之前,语法 Class.FlagName
就足够了,但 PyQt6 现在需要 Class.EnumName.FlagName
.
另一个问题可能与 QTBUG-88709 有关。这是处理操作系统提供的 native 对话框的一系列问题的一部分,这些问题始终取决于系统。
对此没有直接的解决方案,唯一安全的方法是强制执行 DontUseNativeDialog
如有疑问,请标记:
dir_path = QFileDialog.getExistingDirectory(
parent=self,
caption="Select directory",
directory=HOME_PATH,
options=QFileDialog.Option.DontUseNativeDialog,
)
请注意:
ShowDirsOnly
毫无用处,因为只要文件对话框处于Directory
模式(对于getExistingDirectory()
自动完成),它总是会被设置静态函数);- 使用非原生对话框显然会与操作系统显示的正常对话框不一致;
- 尚不清楚该错误是否在遵循 Ubuntu 20.04 通常使用的环境的 Ubuntu/Gnome 版本中自动解决;
- 没有直接的方法仅在需要时强制执行解决方法:要么您找出问题的具体原因,要么您只是假设它不起作用并始终使用非 native 对话框;
关于python - 如何通过QFileDialog获取pyqt6中的目录路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74557955/