我正在尝试将 Gtk 库存图标添加到我的窗口。以下是代码:
#! /usr/bin/python
from gi.repository import Gtk
class MyWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title='My Window Title')
self.icon = self.render_icon(Gtk.STOCK_FLOPPY, 1)
self.set_icon(self.icon)
self.connect('delete-event', Gtk.main_quit)
win = MyWindow()
win.show_all()
Gtk.main()
根据这一页图标大小应该是Gtk 图标大小常量 但 Eclipse 代码完成不显示任何列出的值,如果我手动输入其中一个,我会得到
AttributeError:'gi.repository.Gtk' 对象没有属性 'ICON_SIZE_SMALL_TOOLBAR'
如果我将图标大小设置为文字 1,脚本就会运行。我确信这与 Gtk 或 PyGtk 版本有关,但我不知道我做错了什么。提前致谢,抱歉,这个问题是新手问的。
答案1
问题在于您正在查看 PyGTK 文档,但在脚本中使用 PyGI/GTK3。
文档gtk_widget_render_icon()
内容如下:
gtk_widget_render_icon 自 3.0 版起已弃用,不应在新编写的代码中使用。请改用 gtk_widget_render_icon_pixbuf()。
然后文档gtk_widget_render_icon_pixbuf()
说:
gtk_widget_render_icon_pixbuf 自 3.10 版起已弃用,不应在新编写的代码中使用。请改用 gtk_icon_theme_load_icon()。
很棒吧?!那我们继续吧。
gtk_icon_theme_load_icon()
采用以下参数:
- icon_name :要查找的图标的名称
- size :所需的图标大小。生成的图标可能不完全是此大小
- flags :修改图标查找行为的标志
了解了这一点,你可以render_icon
用下面的方法改变你的旧路线:
icontheme = Gtk.IconTheme.get_default()
self.icon = icontheme.load_icon(Gtk.STOCK_FLOPPY, 128, 0)
这将查找 128x128 像素的图像。您可能需要根据需要更改标志,枚举已记录这里. 这可以翻译成 Python 如下:
GTK_ICON_LOOKUP_NO_SVG -> Gtk.IconLookupFlags.NO_SVG
GTK_ICON_LOOKUP_FORCE_SVG -> Gtk.IconLookupFlags.FORCE_SVG
GTK_ICON_LOOKUP_USE_BUILTIN -> Gtk.IconLookupFlags.USE_BUILTIN
# And so on...