在 PyGtk 中将窗口图标设置为 Gtk Stock 图标

在 PyGtk 中将窗口图标设置为 Gtk Stock 图标

我正在尝试将 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...

相关内容