Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 为什么PyQt5 QFileDialog.getExistingDirectory无法看到~/.config/子目录?_Linux_Python 3.x_Pyqt5 - Fatal编程技术网

Linux 为什么PyQt5 QFileDialog.getExistingDirectory无法看到~/.config/子目录?

Linux 为什么PyQt5 QFileDialog.getExistingDirectory无法看到~/.config/子目录?,linux,python-3.x,pyqt5,Linux,Python 3.x,Pyqt5,在Python2.7和PySide下,我能够指向~/.config/的子目录。但是,当我移动到Python3和PyQt5时,我可以打开~/.config/但不能打开它的子目录。。。(所有目录都具有drwxr-xr-x权限,并且没有发生特殊的chattr内容或ACL内容。) 多亏了@ekhumoro,我们才有了赢家!告诉QFileDialog不要使用本机对话框成功了。具体而言: #!/usr/bin/evn python3 # -*- coding: utf-8 -*- # Arch Linux

在Python2.7和PySide下,我能够指向~/.config/的子目录。但是,当我移动到Python3和PyQt5时,我可以打开~/.config/但不能打开它的子目录。。。(所有目录都具有
drwxr-xr-x
权限,并且没有发生特殊的chattr内容或ACL内容。)


多亏了@ekhumoro,我们才有了赢家!告诉QFileDialog不要使用本机对话框成功了。具体而言:

#!/usr/bin/evn 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))

# SUCCEEDS (where it previously failed)
x = QFileDialog.getExistingDirectory(caption="Choose presets...", directory=wd,
                                     options=QFileDialog.DontUseNativeDialog)

“我没有问题,我使用的是相同软件版本的Arch Linux,你可以更好地解释自己,也许我没有正确地理解你。”Ubuntourist。尝试用完整路径替换所有
“~/.config”
→ <代码>/home/name/.config。。。。不是所有的操作系统,也不是所有的程序都可以使用
~/
作为路径。我也不能在arch linux(python 3.6.5、qt 5.11.0、pyqt 5.10.1)上重现这个问题。你用的是什么?如果在参数中添加
options=QFileDialog.DontUseNativeDialog
,会有什么区别吗?@ekhumaro我使用的是KDE。我将尝试选项=“…”@KnudLarsen不是这样的。传递给QFileDialog的值已扩展为完整路径。这就是os.path.expanduser()所做的,它在部分代码中成功的事实表明“~/”并不是这里的问题。很好,它工作得很好,但仍然相当令人困惑。是否只有那个目录受到影响?或者它是虚线路径吗?它对所有的.虚线目录都是这样的。然而,使用“pipenv外壳”,即使它声称使用相同版本的PyQt5,也不会发生错误。。。(5.10.1.“pip列表”不包括“-3”。)
#!/usr/bin/evn 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))

# SUCCEEDS (where it previously failed)
x = QFileDialog.getExistingDirectory(caption="Choose presets...", directory=wd,
                                     options=QFileDialog.DontUseNativeDialog)