【发布时间】:2018-06-01 03:43:20
【问题描述】:
在 Python2.7 和 PySide 下,我可以指向 ~/.config/ 的子目录。但是,当我移至 Python3 和 PyQt5 时,我可以打开 ~/.config/ 但不能打开它的子目录...(所有目录都具有 drwxr-xr-x 权限,并且没有发生特殊的 chattr 内容或 ACL 内容。)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Arch Linux (up-to-date)
# Python 3.6.5
# python-pyqt5 5.10.1-3
import os
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
app = QApplication(sys.argv)
# Succeeds. (Lists three files in the autostart directory.)
wd = os.path.expanduser("~/.config/autostart")
os.system("ls {0}".format(wd))
# Fails. Opens to ~/
x = QFileDialog.getExistingDirectory(caption="Choose presets...", directory=wd)
wd = os.path.expanduser("~/.config")
# Succeeds. Opens at ~/.config/
x = QFileDialog.getExistingDirectory(caption="Choose presets...", directory=wd)
# Succeeds. Opens at ~/Documents/Volunteer
wd = os.path.expanduser("~/Documents/Volunteer")
x = QFileDialog.getExistingDirectory(None, "Choose presets...", wd)
【问题讨论】:
-
我没问题,而且我用的是Arch Linux和相同的软件版本,你可以更好地解释一下自己,也许我没有正确理解你。
-
@Ubuntourist 。尝试用完整路径替换所有
"~/.config"→/home/name/.config.... 并非所有操作系统,并非所有程序都可以使用~/作为路径。 -
我也无法在 arch linux(python 3.6.5、qt 5.11.0、pyqt 5.10.1)上重现该问题。你用的是什么DM?如果在参数中添加
options=QFileDialog.DontUseNativeDialog会有什么不同吗? -
@ekhumoro 我正在使用 KDE。我会试试 options="..."
-
@KnudLarsen 不是这样。传递给 QFileDialog 的值已经扩展为完整路径。这就是 os.path.expanduser() 所做的,它在部分代码中成功的事实表明“~/”不是这里的问题。
标签: linux python-3.x pyqt5