在 PyGObject 3.16 中为贬值的 Gtk 3.10+ 库存按钮实施替换标签

Implementing replacement label for depreciate Gtk 3.10+ stock buttons in PyGObject 3.16

我正在使用 Glade 3.18 设计界面,稍后我使用 gi 模块中的 PyGObject 加载这些界面以创建 Gtk 3.16 用户界面。

举个例子,让我们使用“确定”按钮。参考手册(对于 Gtk 3 and GI)指出:

GTK_STOCK_OK has been deprecated since version 3.10 and should not be used in newly-written code.

Do not use an icon. Use label "_OK".

但是,将标签设置为 '_OK',或者使用 button.set_label('_OK') 以编程方式或在 Glade 中(在“常规”选项卡下的“带有可选图像的标签”部分中),会生成一个按钮显示“_OK”而不是预期的“OK”和图标。

所以我的问题是:用 PyGObject 3.16 实现建议的 Gtk.STOCK_OK 替换的正确方法是什么?

你应该在Gtk.Box里面装一个Gtk.Image和一个Gtk.Label,在Gtk.Button里面装盒子。您还应该在按钮上使用 Gtk.Button.set_always_show_image(),并使用 Gtk.Button.use_underline()_OK 标签启用助记符。

box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
# image and label are defined elsewhere
box.add(image)
box.add(label)
button = Gtk.Button(use_underline=True, always_show_image=True)
button.add(box)
button.show_all()

无论如何,强烈建议您不要使用图像像'OK'这样的通用标签。使用适当的标签来描述操作,避免使用无意义的图标。

常用图标和标签已被弃用,因为它们对应用程序开发人员来说不够灵活。库存图标不涵盖图标主题中的整套可用命名图标; stock labels 通常没有足够的表现力让用户理解,并且它们还有固定的助记符,这可能会在复杂的 UI 中发生冲突(例如“_Open”和“_OK”),尤其是在翻译时。

同样,GTK 不再提供用户设置来切换菜单和按钮中图标的可见性;应用程序开发人员和设计人员负责决定菜单项或按钮是否应具有图标,因为他们负责决定 GUI 的外观和行为方式。

强烈建议应用程序开发人员在其 UI 中使用富有表现力的标签,并在影响最大的地方使用主题中的图标。