使用 Python3 PyGObject 使用 CSS 对所有 GtkEntry 小部件进行样式化
Styling all GtkEntry widgets with CSS using Python3 PyGObject
我正在使用 PyGObject 开发 GUI 并尝试设置所有条目小部件的样式。从 this post 我得到的印象是我应该能够创建一个适用于所有 GtkEntry 对象的 CSS 样式,但由于某些原因,它在下面的代码中对我不起作用:
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk
class CompletionApp(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
screen = Gdk.Screen.get_default()
provider = Gtk.CssProvider()
style_context = Gtk.StyleContext()
style_context.add_provider_for_screen(
screen, provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
)
css = b"""
GtkEntry {
background: yellow;
}
"""
provider.load_from_data(css)
self.entry = Gtk.Entry()
self.entry.set_name("myentry")
self.add(self.entry)
self.connect("destroy", Gtk.main_quit)
self.show_all()
Gtk.main()
if __name__ == '__main__':
win = CompletionApp()
如果我在 CSS 中将 "GtkEntry" 更改为“#myentry”,它会按预期工作。谁能帮助我了解我应该如何设置所有条目小部件的样式? (为简洁起见,上面的示例只有一个条目,但我正在处理一个有多个条目的应用程序。)
正如在 Gtk+ CSS overview 中看到的那样,小部件名称应该是小写的并且 不是 以 "Gtk":
开头
entry {
background: yellow;
}
我正在使用 PyGObject 开发 GUI 并尝试设置所有条目小部件的样式。从 this post 我得到的印象是我应该能够创建一个适用于所有 GtkEntry 对象的 CSS 样式,但由于某些原因,它在下面的代码中对我不起作用:
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk
class CompletionApp(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
screen = Gdk.Screen.get_default()
provider = Gtk.CssProvider()
style_context = Gtk.StyleContext()
style_context.add_provider_for_screen(
screen, provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
)
css = b"""
GtkEntry {
background: yellow;
}
"""
provider.load_from_data(css)
self.entry = Gtk.Entry()
self.entry.set_name("myentry")
self.add(self.entry)
self.connect("destroy", Gtk.main_quit)
self.show_all()
Gtk.main()
if __name__ == '__main__':
win = CompletionApp()
如果我在 CSS 中将 "GtkEntry" 更改为“#myentry”,它会按预期工作。谁能帮助我了解我应该如何设置所有条目小部件的样式? (为简洁起见,上面的示例只有一个条目,但我正在处理一个有多个条目的应用程序。)
正如在 Gtk+ CSS overview 中看到的那样,小部件名称应该是小写的并且 不是 以 "Gtk":
开头entry {
background: yellow;
}