Я разрабатываю графический интерфейс с PyGObject и пытаюсь стилизовать все виджеты ввода. Из этого поста создается впечатление, что я должен иметь возможность создать стиль CSS, который будет применяться ко всем объектам GtkEntry, но по какой-то причине он не работает для меня в приведенном ниже коде:
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()
Если я изменю «GtkEntry» на «#myentry» в CSS, он будет работать как положено. Может кто-нибудь помочь мне понять, что я должен делать, чтобы стилизовать все входные виджеты? (Для краткости в приведенном выше примере есть только одна запись, но я работаю над приложением, в котором есть несколько записей.)