在GTK3中显示股票图标的不推荐方法是什么?

时间:2015-11-22 19:59:30

标签: python gtk3 pygobject

我正在使用PyGObject组装GUI。这个Python代码在上下文中工作。我得到一个带有“打开”图标的工具栏按钮。

from gi.repository import Gtk

# ...

toolbar = Gtk.Toolbar()
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)

# ...

self.fileOpen = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)
self.fileOpen.connect("clicked", self.on_FileOpenStandard_activate)
toolbar.insert(self.fileOpen, -1)

Image shows icon appearing on the toolbar.

但根据this resourcenew_from_stock()已被弃用:

  

从版本3.10开始不推荐使用:改为使用Gtk.ToolButton.new ()Gtk.Image.new_from_icon_name ()

好的。因此,在进一步挖掘之后,这就是我提出的替代方案:

self.fileOpen = Gtk.ToolButton(
        Gtk.Image.new_from_icon_name("document-open",
                                     Gtk.IconSize.LARGE_TOOLBAR),
        "Open")
self.fileOpen.connect("clicked", self.on_FileOpenStandard_activate)
toolbar.insert(self.fileOpen, -1)

但这是结果:

Image shows icon not appearing on the toolbar.

当前GTK库仍然支持的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

看看这个C++ GitHub example,我很惊讶发现直接调用静态new()函数而不是构造函数。

所以我决定尝试一下。仔细看看差异。它很微妙。

                              #vvv
self.fileOpen = Gtk.ToolButton.new(
        Gtk.Image.new_from_icon_name("document-open",
                                     Gtk.IconSize.LARGE_TOOLBAR),
        "Open")
self.fileOpen.connect("clicked", self.on_FileOpenStandard_activate)
toolbar.insert(self.fileOpen, -1)

令我惊讶的是,这会显示另一种方法没有的图标。

奖金:以上的清洁版:

# iconSize to be reused
iconSize = Gtk.IconSize.LARGE_TOOLBAR

# ...

openIcon = Gtk.Image.new_from_icon_name("document-open", iconSize)
self.fileOpen = Gtk.ToolButton.new(openIcon, "Open")
self.fileOpen.connect("clicked", self.on_FileOpenStandard_activate)
toolbar.insert(self.fileOpen, -1)