【问题标题】:After adding "primary toolbar" style class to a gtk.Builder object, gtk.ToolButtons in toolbar are not primary-themed将“主工具栏”样式类添加到 gtk.Builder 对象后,工具栏中的 gtk.ToolButtons 不是主主题
【发布时间】:2012-08-30 20:03:13
【问题描述】:

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

【问题讨论】:

标签: python glade gtk3 gtkbuilder


【解决方案1】:

我在这里写这个答案是因为它是一个解决方案,但它并不理想,因为它不使用 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    相关资源
    最近更新 更多