Как я получаю имена в своей знаковой теме для использования с Python appindicator модуль?

Как я получаю строки, которые я могу вставить вместо, 'gtk-выполняются'?

#!/usr/bin/python

import gobject
import gtk
import appindicator

if __name__ == "__main__":
    ind = appindicator.Indicator("example-simple-client", "gtk-execute",
        appindicator.CATEGORY_APPLICATION_STATUS)
    ind.set_status (appindicator.STATUS_ACTIVE)

    menu = gtk.Menu()

    for i in range(3):
        buf = "Test-undermenu - %d" % i
        menu_items = gtk.MenuItem(buf)
        menu.append(menu_items)
        menu_items.connect("activate", gtk.main_quit)
        menu_items.show()

    ind.set_menu(menu)
    gtk.main()

Мой ответ ниже в значительной степени делает это. Тем не менее было бы хорошо иметь некоторый код Python, который производит все доступные значки.

4
задан 13 April 2017 в 05:24

3 ответа

Простой:

import gtk

icon_theme = gtk.icon_theme_get_default()
print icon_theme.list_icons()

Вывод которого является кортежем всех имен значка:

('input-gaming', 'gnome-aorta', 'stock_bottom', 'config-language', ...) 

См. также: gtk. IconTheme.list_icons в pygtk документах

Если требуется получить значок как GtkPixbuf, можно использовать load_icon метод:

>>> icon_theme.load_icon("gtk-execute", 48, 0)
<gtk.gdk.Pixbuf object at 0xb737443c (GdkPixbuf at 0x907bf38)>

Если Вы хотите имя файла вместо этого, можно использовать lookup_icon метод:

>>> icon_theme.lookup_icon("gtk-execute", 48, 0).get_filename()
/usr/share/icons/Humanity/actions/48/gtk-execute.svg

Где 48 размер желаемого значка (см. также: get_icon_sizes).

13
ответ дан 23 November 2019 в 11:38

Это следует за регулярным именованием значка, которое, насколько я знаю, будет запускаться в Вашей теме и затем продолжать отступать, пока это не будет соответствовать чему-то имени.

При взятии, например, знаковой темы Фаэнци я в настоящее время использую.

В /usr/share/icons/Faenza/index.theme это говорит (отсеченный)

[Icon Theme]
Name=Faenza
Inherits=gnome,hicolor
Comment=Icon theme project with tilish style, by Tiheum
Directories=actions/16,animations/16,apps/16,categories/16,devices/16,emblems/16,mimetypes/16,places/16,status/16,stock/16,actions/22,animations/22,apps/22,categories/22,devices/22,emblems/22,mimetypes/22,places/22,status/22,stock/22,actions/24,animations/24,apps/24,categories/24,devices/24,emblems/24,mimetypes/24,places/24,status/24,stock/24,actions/32,animations/32,apps/32,categories/32,devices/32,emblems/32,mimetypes/32,places/32,status/32,stock/32,actions/48,animations/48,apps/48,categories/48,devices/48,emblems/48,mimetypes/48,places/48,status/48,stock/48,actions/scalable,apps/scalable,categories/scalable,devices/scalable,emblems/scalable,mimetypes/scalable,places/scalable,status/scalable,stock/scalable

Заметьте Inherits=... строка? Это - "нейтрализации" Фаэнци в случае, если это не имеет самого значка.

Это относится к Вашему вопросу, потому что можно ввести имя для значка, и затем значок будет сначала разыскиваться в /usr/share/icons/YOURICONTHEME/. В нечетном случае, что это не находит его, это проверит нейтрализации (в этом случае /usr/share/icons/gnome/ и /usr/share/icons/hicolor/). Вы найдете, что большинство (Ubuntu) знаковые темы наследовалось gnome и/или hicolor таким образом, при использовании названия значка в этих папках можно, скорее всего, пребывать в уверенности, что каждая тема покажет значок.

1
ответ дан 23 November 2019 в 11:38

Бесстыдный самоответ: http://gtk2-perl.sourceforge.net/doc/pod/Gtk2/Stock.html

Править: Нет не действительно. Неправильно неполный ответ. Например, "сообщения индикатора" не включены в тот список.

Обновление: В папке /usr/share/icons/MYTHEME где MYTHEME обозначает, что название используемой темы должно быть значками. Протестирует это теперь.

Update2: Да все значки в вышеупомянутой работе папки! И темы имеют нейтрализации для объектов, не найденных. Те в gtk-запасе, упомянутом в ссылке ранее, от нейтрализаций. Было бы хорошо иметь некоторый код Python, который производит все доступные значки. Хорошие стандартные объекты использования одного тарифа gtk-запаса и темы по умолчанию только, поскольку другие, присутствие зависит от темы пользователь, используют на времени выполнения.

1
ответ дан 23 November 2019 в 11:38

Другие вопросы по тегам:

Похожие вопросы: