PyQt: QFileDialog.getExistingDirectory使用默认目录,用户无关
在使用 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
)