以编程方式更改 FileChooserDialog 以首先使用 Python 3.4 和 Gtk3 列出目录?

Programmatically change FileChooserDialog to list directories first with Python 3.4 and Gtk3?

我是 UI 使用 Gtk 进行开发的新手,运行 是我没想到的东西。 FileChooser 自动按名称排序,无论它是文件还是目录。我喜欢先列出目录,人们都在使用它 to/expect。

有什么方法可以让 FileChooser 以这种方式运行吗?

编辑: 在大多数主要的可视化文件管理器中,在文件之前列出目录是默认行为。这些链接显示了人们通常在其文件管理器中看到的内容: konqueror, nautilus, thunar, windows, osx and this is what I'm seeing with my Gtk FileChooser。有没有一种方法可以使用代码让它看起来像默认的其他文件管理器?

EDIT2,我打开它的代码:

dialog=Gtk.FileChooserDialog("Select a file",self,
        Gtk.FileChooserAction.OPEN,(
            Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
            Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
response=dialog.run()

在我的测试中 [下面的片段] gtk 文件选择器总是在文件之前列出文件夹。

示例改编自: https://developer.gnome.org/gtk3/stable/GtkFileChooserDialog.html Python 文档位于: http://lazka.github.io/pgi-docs/#Gtk-3.0/classes/Dialog.html#Gtk.Dialog.run

#!/usr/bin/env python3

from gi.repository import Gtk

from pprint import pprint

dialog = Gtk.FileChooserDialog(
    title="Open File"
)

res = dialog.run()

pprint(res)

dialog.destroy()

注意:如果你运行这个,你可以用clt+f4[=32=退出GTK gui ],由于示例简单,它不会在正常信号上退出。您也可以结束从任务管理器启动的 python 进程。

版本:

$ python3 --version
Python 3.4.0
$ python3
>>> from gi.repository import Gtk
>>> Gtk._version
'3.0'

感谢 Fabby 和 ThorSummoner 的评论,我偶然发现了最接近的解决方案。使用 GSettings,我可以从应用程序更改 FileChooser 设置,但仅限于全局。在这种情况下这应该没问题,因为用户可能更愿意在他们的系统上使用所有基于 Gtk 的 FileChooser 获得相同的体验。

from gi.repository import Gio

setting = Gio.Settings.new("org.gtk.Settings.FileChooser")
setting.set_boolean("sort-directories-first", True)

正如预期的那样,将其设置为 False 将仅按名称排序,而不会将目录分组在一起。

设置也可以绑定到一个控件Gio.Settings.bind()

我选择了一个设置开关,用户可以根据自己的喜好进行设置。