如何在 Python 中的 GTK3 FileChooser 中设置初始目录?

问题描述

编辑:在下面的代码中找到并显示解决方案。

这里是 Python 菜鸟。我通常喜欢自己寻找答案,但我对这个很感兴趣。

我只想设置当 FileChooser 打开时用户启动的目录(而不是 Python 工作目录)。

这似乎是一件很简单的事情,也是一个普遍的需求,我很惊讶也很沮丧,因为我在 Glade(我用来创建 FileChooser)和任何在线 GTK 文档中都找不到任何东西。

那么……这怎么办?

如前所述,我用 Glade 构建了 xml 文件,并用 gtk.builder 加载了它。

非常感谢您的帮助

带有 (A) 解决方案的代码

def GetFile():
    import gi

    gi.require_version("Gtk","3.0")
    from gi.repository import Gtk

    chosenfile = None

    class Handler:

        def on_destroy(self,*args):
            Gtk.main_quit()

        def on_OK_clicked(self,*args):
            nonlocal chosenfile
            chosenfile = window.get_filename()
            Gtk.main_quit()

        def on_cancel_clicked(self,*args):
            nonlocal chosenfile
            chosenfile = "CANCELLED"
            Gtk.main_quit()

    builder = Gtk.Builder()
    builder.add_from_file("mod_FileChoose.glade")
    builder.connect_signals(Handler())

    window = builder.get_object("FileSelector")
#HERE IS THE LINE IN QUESTION
    Gtk.FileChooser.set_current_folder(window,"/home/")
    window.show_all()

    Gtk.main()

    return chosenfile

我应该在 GTK API 源代码添加它,它指出:

“一般来说,您不应使用此功能。请参阅有关设置文件选择器对话框的部分[gtkfilechooserdialog-setting-up] 了解其背后的原理。”

到目前为止,我还没有找到不使用或更好方法的设置部分。

来源:gtk API ref

解决方法

对于提到的“设置部分”that can be found here 使用 set_current_folder 方法似乎没问题:

请注意,旧版本的文件选择器文档建议在各种情况下使用 gtk_file_chooser_set_current_folder(),目的是让应用程序建议合理的默认文件夹。这不再被认为是一个好策略,因为现在文件选择器能够自己提出好的建议。一般来说,您应该只在适合使用 gtk_file_chooser_set_filename() 时,即当您执行另存为命令并且您已经在某处保存了一个文件时,才应该让文件选择器显示特定文件夹。

附加信息:为了查找文档,我在 Linux 上使用了 DevHelp 工具。大多数 Gtk 文档(用于 python)can be found on this github repo。 Gtk3 的官方在线文档应该是 these