如何突出显示 Gtk 中的按钮?
How do I highlight a button in Gtk?
我注意到在 Ubuntu 上的许多系统对话框中,有一个按钮(通常是 打开、保存等)颜色与正常颜色不同。而且,这些按钮的颜色会随着系统主题而变化;在 Adwaita,它们是蓝色的。在亚鲁,它们是绿色的。所以不,我不是在问如何将按钮的背景设置为特定颜色。
我的问题是,如何让按钮根据当前主题高亮显示,而无需手动设置颜色?甚至可以在 Python 中执行此操作吗?我查看了 Gtk
、Gtk.Dialog
、GtkSource
、Gdk
、GLib
和 Pango
,但一无所获。理想情况下,该解决方案适用于任何按钮,而不仅仅是对话框中的按钮。
您可以使用 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-action
和destructive-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()
我注意到在 Ubuntu 上的许多系统对话框中,有一个按钮(通常是 打开、保存等)颜色与正常颜色不同。而且,这些按钮的颜色会随着系统主题而变化;在 Adwaita,它们是蓝色的。在亚鲁,它们是绿色的。所以不,我不是在问如何将按钮的背景设置为特定颜色。
我的问题是,如何让按钮根据当前主题高亮显示,而无需手动设置颜色?甚至可以在 Python 中执行此操作吗?我查看了 Gtk
、Gtk.Dialog
、GtkSource
、Gdk
、GLib
和 Pango
,但一无所获。理想情况下,该解决方案适用于任何按钮,而不仅仅是对话框中的按钮。
您可以使用 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-action
和destructive-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()