以编程方式更改 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()
我选择了一个设置开关,用户可以根据自己的喜好进行设置。
我是 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()
我选择了一个设置开关,用户可以根据自己的喜好进行设置。