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

使用Python 3.4和Gtk3以编程方式将FileChooserDialog更改为首先列出目录?,python,gtk,Python,Gtk,我是Gtk的UI开发新手,遇到了一些意想不到的事情。FileChooser会自动按名称排序,而不管它是文件还是目录。我喜欢先列出目录,人们习惯了/期待着它 有什么方法可以让FileChooser这样做吗 编辑: 在大多数主要的可视化文件管理器中,默认行为是在文件之前列出目录。这些链接显示了人们通常在文件管理器中看到的内容: 这就是我所看到的。有没有一种方法可以让它在默认情况下看起来像其他文件管理器一样,使用代码 EDIT2,我打开它的代码: dialog=Gtk.FileChooserDialo

我是Gtk的UI开发新手,遇到了一些意想不到的事情。FileChooser会自动按名称排序,而不管它是文件还是目录。我喜欢先列出目录,人们习惯了/期待着它

有什么方法可以让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文件选择器总是在文件之前列出文件夹

示例改编自: Python文档位于:

注意:如果您运行这个,您可以使用clt+f4退出GTK gui,由于示例的简单性,它不会在正常信号下退出。您还可以结束从任务管理器开始的python过程

版本:

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

多亏了Fabby和ThorCaller的评论,我偶然发现了最接近的解决方案。使用GSettings,我可以从应用程序更改FileChooser设置,但只能全局更改。在这种情况下,这应该没问题,因为用户可能更喜欢在他们的系统上与所有基于Gtk的文件选择器有相同的体验

from gi.repository import Gio

setting = Gio.Settings.new("org.gtk.Settings.FileChooser")
setting.set_boolean("sort-directories-first", True)
正如预期的那样,将其设置为False只会按名称排序,而不会将目录分组在一起

该设置也可以绑定到具有


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

不要。仅仅因为你习惯了这种方式并不意味着我也习惯了。提交一个bug,让他们修复它。@Rawing感谢您的评论,它说服了我,我需要为我的问题添加更多细节。我对它做了一些修改,并包括一些示例,说明这是大多数文件管理器的默认行为。我不是想强迫用户分享我的首选体验,我是想改变大多数用户已经习惯的体验。另一个想法是创建自己的文件选择器。对这需要时间,但你会得到你想要的。毕竟是一个列表视图,在最后列出了第一个文件夹名和文件。听起来没那么难。gtk文件选择器的完整文档在这里:我没有注意到关于文件夹的任何事情,但我也从来没有注意到我的gtk驱动的桌面也曾经首先列出文件。您愿意共享您的源代码行吗?除了GtkFileChooserDialog文档外,还有一个包含GTK+中其他文件选择器共享的方法。@Fabby,GTK3.0和Python 3.4。2@Fabbypkg-config.exe--modversion gtk+-3.0返回3.6.4可能我发现了一些东西:你的Windows系统上有org.gtk.Settings.FileChooser.gschema.xml文件吗?@Fabby,是的,我有一个文件,我找到了“sort_folders_first”的行,它确实设置为false。我希望我可以让它以编程方式工作,而不需要更改Gtk的全局设置。Gtk附带的演示应用程序(Gtk-demo.exe-用C编写),正如我所期望的那样。查看它的源代码,它似乎没有做任何特殊的事情,只是打开了窗口。谢谢你的帮助。环顾四周,似乎这就是Gtk3的工作原理,但不确定为什么他们的演示可以工作fine@sdouble@Fabby我在谷歌上快速搜索了一下,然后停了下来:这可能是为您的应用程序设置gscheema设置的一个线索。我更愿意尊重全局设置,但在windows上它基本上是一个FFA。希望这能有所帮助![P.S.I谷歌
pygtk集g模式
]
from gi.repository import Gio

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