如何获取我的图标主题中的名称以与pythons appindicator模块一起使用?

如何获取我可以插入的字符串而不是’gtk-execute’?

#!/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代码可以输出所有可用的图标,那还是不错的选择。

简单:

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

其输出是所有图标名称的元组:

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

另请参见:pygtk文档中的gtk.IconTheme.list_icons

如果您想将图标作为GtkPixbuf ,可以使用load_icon方法:

 >>> icon_theme.load_icon("gtk-execute", 48, 0)  

如果您想要一个文件名 ,可以使用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 )。

它遵循常规图标命名,据我所知,这将从你的主题开始,然后继续回落,直到它与名称匹配。

以我目前使用的法恩莎图标主题为例。

/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/YOURICONTHEME/ 。 在奇怪的情况下,它没有找到它,它将检查回退(在这种情况下/usr/share/icons/gnome//usr/share/icons/hicolor/ )。 您会发现大多数(Ubuntu)图标主题都inheritance自gnome和/或hicolor因此如果您在这些文件夹中使用图标的名称,您很可能会放心,每个主题都会显示一个图标。

无耻的selfanswer : http : //gtk2-perl.sourceforge.net/doc/pod/Gtk2/Stock.html

编辑 :不,不是真的。 错误的不完整答案。 例如,“指示符消息”不包含在该列表中。

更新 :在文件夹/usr/share/icons/MYTHEME ,其中MYTHEME表示正在使用的主题的名称应为图标。 现在就测试一下。

Update2 :是的上述文件夹中的所有图标都有效! 主题有未找到的项目的后备。 之前链接中提到的gtk-stock中的那些来自后备。 很高兴有一些python代码可以输出所有可用的图标。 只使用gtk-stock和default-theme的标准项目,其他人的存在取决于用户在运行时使用的主题。