默认背景颜色似乎是蓝色(来自Adwaita主题),即使我将消息类型设置为警告。我喜欢使用CSS。
cross-domain components
:
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
截图:
我在Windows 10上使用Python 2.7.13和GTK + 3.22安装了所有更新,并通过MSYS2使用infobar {
background-color: yellow;
}
安装了所有更新。
答案 0 :(得分:2)
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()