使用Python3 PyGObject使用CSS为所有GtkEntry小部件设置样式

问题描述 投票:1回答:1

我正在使用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”,它会按预期工作。任何人都可以帮助我理解我应该做什么来设置所有条目小部件的样式? (为简洁起见,上面的示例只有一个条目,但我正在处理一个包含多个条目的应用程序。)

python gtk3 pygobject gtkentry
1个回答
0
投票

Gtk+ CSS overview可以看出,小部件名称应该是小写,而不是以“Gtk”开头:

entry {
    background: yellow;
}
© www.soinside.com 2019 - 2024. All rights reserved.