PyQt: QFileDialog.getExistingDirectory使用默认目录,用户无关

11 投票
2 回答
29473 浏览
提问于 2025-04-18 13:15

在使用 QFileDialog.getExistingDirectory 的时候,我发现可以指定一个默认的目录路径。我想在我的Linux(Mint)电脑的用户主文件夹里使用一个默认目录。我使用了:

my_dir = QtGui.QFileDialog.getExistingDirectory(
    self,
    "Open a folder",
    "/home/my_user_name/",
    QtGui.QFileDialog.ShowDirsOnly
    )

这个方法效果很好。接下来我想让每个用户都能使用这个功能。我尝试了标准的Linux方式,把 /home/my_user_name/ 改成 ~/,但这并没有成功。结果是它显示的是工作目录,而不是用户的目录。

我在从终端启动我的应用时,是否应该使用更多的系统参数?还是说我漏掉了什么PyQt的功能?

2 个回答

3

你还可以通过获取环境变量“HOME”来找到任何用户的主文件夹,这个可以用 os.getenv(varname) 来实现。

>>> import os
>>> os.getenv("HOME")
'/home/my_user_name'

你的代码可能看起来像这样:

import os
home = os.getenv("HOME")

my_dir = QtGui.QFileDialog.getExistingDirectory(
    self,
    "Open a folder",
    home,
    QtGui.QFileDialog.ShowDirsOnly
    )
13

你可以通过使用 os.path.expanduser 来获取用户的主目录。

>>> from os.path import expanduser
>>> expanduser("~")
/home/user_name

这个方法在Windows和Linux系统上都能用。

你的代码块看起来会是这样的:

my_dir = QtGui.QFileDialog.getExistingDirectory(
    self,
    "Open a folder",
    expanduser("~"),
    QtGui.QFileDialog.ShowDirsOnly
)

撰写回答