我当前的GTK弹出窗口如下所示-请注意,它采用了深色氛围颜色主题。
在GTK3.8和更高版本中,有GTKMenuButtons-弹出窗口如下所示-请注意,它看起来像是在使用按钮样式提示。
我喜欢这种样式,我希望我的应用程序弹出窗口看起来一样,以便有更好的外观-集成和感觉。
我知道我可以使用以下python代码片段覆盖弹出窗口的背景色:
样式= button.get_style_context() 颜色= style.get_background_color(Gtk.StateFlags.NORMAL) popup_menu.override_background_color(Gtk.StateFlags.NORMAL,颜色)
如果我应用按钮背景色,它看起来像这样。
我不知道如何将按钮字体颜色应用于弹出窗口。
更重要的是,还有一个令人讨厌的黑色边框-1像素宽?
因此,对于我的问题-我是要尝试这种正确方法(覆盖主题属性),还是可以以某种方式将一个小部件(按钮或按钮弹出窗口)的CSS样式应用于弹出窗口,以便模仿菜单按钮弹出窗口样式?
更多信息-GTKMenuButton源gtkmenubutton.c没有针对弹出窗口的任何主题控件,因此我迷惑于菜单按钮弹出窗口如何获得其主题。
经过进一步调查,我发现小部件(或容器)的样式类会影响嵌入式对象的整体样式。
让我进一步举例说明:
构造一个网格并附加包含弹出菜单的MenuButton。
将工具栏样式类添加到网格会影响该网格中的所有对象,包括弹出窗口。
style = grid.get_style_context()
style.add_class(Gtk.STYLE_CLASS_TOOLBAR)
结果是这样的:
从gi.repository导入Gtk 类MenuExampleWindow(Gtk.Window): def __init __(): Gtk.Window .__ init __(self,title =“菜单示例”) self.set_default_size(200,200) 网格= Gtk.Grid() grid.insert_column(0) 菜单= Gtk.Menu() mitem1 = Gtk.MenuItem(label =“ Item 1”) mitem2 = Gtk.MenuItem(label =“ Item 2”) menub = Gtk.MenuButton(label ='菜单') menub.set_popup(菜单) menub.set_align_widget(无) menub.show_all() menu.append(mitem1) menu.append(mitem2) menu.attach_to_widget(菜单,无) menu.show_all() 样式= grid.get_style_context() style.add_class(Gtk.STYLE_CLASS_TOOLBAR) grid.attach(menub,0,0,1,1) self.add(网格) 窗口= MenuExampleWindow() window.connect(“删除事件”,Gtk.main_quit) window.show_all() Gtk.main()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句