如何在GTK+3中为标题栏的关闭按钮设置主题?

7
我想修改带有所谓的“标题栏”的GTK+3窗口上关闭按钮的样式,其中窗口被呈现为没有装饰并且GTK组成标题栏和小部件。
“X”关闭按钮是什么元素,它属于哪些CSS类(如果有)?
请注意,这不是窗口管理器主题的一部分,而是由GTK+绘制的。
4个回答

8

这是一个带有图标window-close-symbolic的GtkButton,具有样式类titlebutton(与标题栏上的其他按钮相同的类),假设应用程序正在使用内置的关闭按钮。


.titlebutton 就是它了! - Fabian Knorr
@jku:有没有关于可用样式类的文档,还是只能阅读小部件的源代码或使用gtkparasite? - liberforce
据我所知,这里没有相关的文档,也没有稳定性保证,因此该类或整个小部件在下一个版本中可能会消失(虽然不太可能,但只是指出这一点)。 - Jussi Kukkonen
整个小部件不会消失,只是被弃用了。一旦新的主要版本发布(就像GTK 2→GTK 3转换所发生的那样),弃用的内容就会被删除。 - liberforce
我指的是关闭按钮:它的实现方式是 GtkHeaderBar 的内部细节。不能保证它是一个真正的 GtkButton。 - Jussi Kukkonen

4

2020-10-14 编辑:

自GTK 3.14起,gtkparasite已被整合到GTK中,以名为GtkInspector的形式呈现。

原始回答:

您可以使用gtkparasite来查找元素的类型、名称以及其嵌套方式。


3

最小化/最大化/关闭按钮选择器:

headerbar.titlebar button.titlebutton.close
headerbar.titlebar button.titlebutton.maximize
headerbar.titlebar button.titlebutton.minimize

任何/每个最小化、最大化或关闭按钮的选择器:
headerbar.titlebar > :last-child button.titlebutton

整个最小化/最大化/关闭按钮组的容器选择器:
headerbar.titlebar > :last-child

左侧按钮的选择器(通常是应用程序按钮,但并非总是如此):
headerbar.titlebar > :first-child > button.titlebutton

左侧按钮容器的选择器:
headerbar.titlebar > :first-child

我在自己的主题中使用了这些选择器。你可以在此处检查相关的代码片段:http://xfce-evolution.sourceforge.net

0

对于Python

header = Gtk.HeaderBar()
header.set_show_close_button(False)

button = Gtk.Button()
button.set_relief(Gtk.ReliefStyle.NONE)
img = Gtk.Image.new_from_icon_name("window-close-symbolic", Gtk.IconSize.MENU)
button.set_image(img)
button.connect("clicked", Gtk.main_quit)
header.pack_end(button)

seperator = Gtk.Separator.new(Gtk.Orientation.VERTICAL)
header.pack_end(seperator)

#window/self.set_titlebar(header)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接