将“主工具栏”样式类添加到gtk.Builder对象后,工具栏中的gtk.ToolButtons不是以主题为主题的

时间:2012-08-30 20:03:13

标签: python glade gtk3 gtkbuilder

我一直在尝试让我的工具栏看起来像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进行设计会很棒。

1 个答案:

答案 0 :(得分:2)

我在这里写这个答案,因为它是一个解决方案,但它并不理想,因为它不使用Glade而且它有点混乱。我将不得不等到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)