如何突出显示 Gtk 中的按钮?

How do I highlight a button in Gtk?

我注意到在 Ubuntu 上的许多系统对话框中,有一个按钮(通常是 打开保存等)颜色与正常颜色不同。而且,这些按钮的颜色会随着系统主题而变化;在 Adwaita,它们是蓝色的。在亚鲁,它们是绿色的。所以不,我不是在问如何将按钮的背景设置为特定颜色。

我的问题是,如何让按钮根据当前主题高亮显示,而无需手动设置颜色?甚至可以在 Python 中执行此操作吗?我查看了 GtkGtk.DialogGtkSourceGdkGLibPango,但一无所获。理想情况下,该解决方案适用于任何按钮,而不仅仅是对话框中的按钮。

您可以使用 StyleContext 来突出显示小部件。 Gtk.Button 等继承自 Gtk.Widget 的 Gtk 小部件可以通过调用 get_style_context. You can then add class(a str) to the context by calling add_class 来获取它的 StyleContext。 gtk本身提供了suggested-actiondestructive-action。您还可以定义自己的样式 class.

下面是使用 suggested aciton 的示例。

import gi

gi.require_version("Gtk", "3.0")
from gi.repository import Gtk

win = Gtk.Window()

box = Gtk.Box()
button1 = Gtk.Button(label="button1")
button2 = Gtk.Button(label="button2")
box.pack_start(button1, True, True, 0)
box.pack_start(button2, True, True, 0)

button1_style_context = button1.get_style_context()
button1_style_context.add_class('suggested-action')

win.add(box)
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()