将“主工具栏”样式类添加到gtk建造者对象,gtk.工具按钮工具栏中没有主主题

2024-03-28 18:57:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试让我的工具栏看起来像Ubuntu应用程序中的标准工具栏,它在一定程度上起作用,只是工具栏中的按钮没有正确的主题应用。默认工具栏的文本是彩色的,鼠标悬停时按钮是难看的棕褐色,而不是像在标准的Ubuntu应用程序中那样变成深灰色。在

换句话说,我得到的是:

而不是这样:

(我没有足够的代表直接发布图片)

我一直在使用以下方法来更改工具栏样式,因为Glade似乎无法自行更改它:

self.bd = Gtk.Builder()
self.bd.add_from_file("builderfile.glade")
self.bd.connect_signals(self)
...

toolb = self.bd.get_object("toolbar")
toolb_style = toolb.get_style_context()
toolb_style.add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)

这在某种程度上起作用,即工具栏现在变暗,但按钮的主题设置不正确。我尝试在设置STYLE_CLASS_PRIMARY_TOOLBAR后手动将按钮添加到工具栏中,而不是使用Gtk.Builder(),但它们的颜色也不正确。在

我想手动创建一个工具栏并填写所有的信息可能会有用,但是如果能够使用Glade进行设计就更好了。在


Tags: selfadd应用程序gtk主题标准getstyle
1条回答
网友
1楼 · 发布于 2024-03-28 18:57:06

我在这里写这个答案,因为它是一个解决方案,但它并不理想,因为它没有使用空地,而且有点混乱。我得等到Glade的新版本进入Ubuntu,因为显然这个特性已经被添加到了上游。在

我最终使用的解决方案是用标准GTK和python创建所有工具栏,然后将其添加到Glade中定义的空Gtk.Box。像这样:

bd = Gtk.Builder()
bd.add_from_file("gladefile.glade")

...

button1 = Gtk.ToolButton(stock_id=Gtk.STOCK_ADD, ...)
button2 = Gtk.ToolButton(...)

toolbar = Gtk.Toolbar()
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)
toolbar.insert(button1, 0)
toolbar.insert(button2, 1)
toolbar.show_all()

bd.get_object("toolbar_slot").pack_start(toolbar, False, True, 0)

相关问题 更多 >