如何将 Gtk.InfoBar 的背景颜色更改为黄色?
How to change the background-color of a Gtk.InfoBar to yellow?
默认背景颜色似乎是蓝色(来自 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
。
Gtk.InfoBar has a single CSS node with name infobar. The node may get
one of the style classes .info, .warning, .error or .question,
depending on the message type.
默认情况下,Gtk.InfoBar 消息类型是 Gtk.MessageType.INFO 而您的 style.css
文件应该是,例如:
infobar.info {
background-color: yellow;
}
这样您可以更具体地指定您正在设置的消息类型,但 infobar
本身也可以。优点是您可以使用 infobar.<messagetype>
.
为每种消息类型进行自定义设置
编辑:
将接收 css class 的小部件更改为 Gtk.InfoBar 实例:
ib.get_style_context()\
.add_provider(provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
编辑 2:
要将 CssProvider (StyleProvider) 作为一个整体添加到应用程序中,您可以使用 Gdk.Screen class 方法 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()
默认背景颜色似乎是蓝色(来自 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
。
Gtk.InfoBar has a single CSS node with name infobar. The node may get one of the style classes .info, .warning, .error or .question, depending on the message type.
默认情况下,Gtk.InfoBar 消息类型是 Gtk.MessageType.INFO 而您的 style.css
文件应该是,例如:
infobar.info {
background-color: yellow;
}
这样您可以更具体地指定您正在设置的消息类型,但 infobar
本身也可以。优点是您可以使用 infobar.<messagetype>
.
编辑:
将接收 css class 的小部件更改为 Gtk.InfoBar 实例:
ib.get_style_context()\
.add_provider(provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
编辑 2:
要将 CssProvider (StyleProvider) 作为一个整体添加到应用程序中,您可以使用 Gdk.Screen class 方法 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()