【问题标题】:How to change the background-color of a Gtk.InfoBar to yellow?如何将 Gtk.InfoBar 的背景颜色更改为黄色?
【发布时间】:2017-08-22 00:04:11
【问题描述】:

默认背景颜色似乎是蓝色(来自 Adwaita 主题),即使我将消息类型设置为警告。我更喜欢使用 CSS。

example.py

# coding=utf-8

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk

w = Gtk.Window()
ib = Gtk.InfoBar()

w.add(ib)
w.connect("delete-event", Gtk.main_quit)

provider = Gtk.CssProvider()
provider.load_from_path("style.css")

w.get_style_context()\
     .add_provider(provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)

w.show_all()
Gtk.main()

style.css

infobar {
    background-color: yellow;
}

截图

我在 Windows 10 上使用 Python 2.7.13 和 GTK+ 3.22 并安装了所有更新,并通过 MSYS2 使用pacman -Syyu 安装了所有更新。

【问题讨论】:

    标签: css python-2.7 windows-10 gtk3 msys2


    【解决方案1】:

    来自Python Gtk API

    Gtk.InfoBar 有一个名为 infobar 的 CSS 节点。该节点可能会得到 样式类 .info、.warning、.error 或 .question 之一, 取决于消息类型。

    默认情况下,Gtk.InfoBar 消息类型为 Gtk.MessageType.INFO,您的 style.css 文件应为,例如:

    infobar.info {
        background-color: yellow;
    }
    

    这样您可以更具体地设置您正在设置的消息类型,但infobar 本身也可以工作。优点是您可以使用infobar.<messagetype> 为每种消息类型进行自定义设置。

    编辑:

    将接收 css 类的小部件更改为 Gtk.InfoBar 实例:

    ib.get_style_context()\
         .add_provider(provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
    

    编辑 2:

    要将 CssProvider (StyleProvider) 作为一个整体添加到应用程序中,您可以使用 Gdk.Screen 类方法 Gdk.Screen.add_provider_for_screen(更多 info here

    更改代码以反映这些更改,您将拥有:

    # coding=utf-8
    
    import gi
    gi.require_version("Gtk", "3.0")
    from gi.repository import Gtk, Gdk
    
    w = Gtk.Window()
    ib = Gtk.InfoBar()
    
    w.add(ib)
    w.connect("delete-event", Gtk.main_quit)
    
    provider = Gtk.CssProvider()
    provider.load_from_path("style.css")
    
    Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default (), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
    
    w.show_all()
    Gtk.main()
    

    【讨论】:

    • @silviubogan 抱歉,我忘了设置小部件。检查编辑。
    • 有效!但我想为我的整个程序创建一个全局 CSS 文件。如果您解释的技术是为我想要设置整个 CSS 文件样式的每个小部件关联,我该怎么做?
    猜你喜欢
    • 2017-06-11
    • 2020-04-03
    • 1970-01-01
    • 2014-01-19
    • 2015-05-30
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 2019-02-11
    相关资源
    最近更新 更多