Стилизация всех виджетов GtkEntry с помощью CSS с использованием Python3 PyGObject - PullRequest
1 голос
/ 10 марта 2019

Я разрабатываю графический интерфейс с 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, он будет работать как положено. Может кто-нибудь помочь мне понять, что я должен делать, чтобы стилизовать все входные виджеты? (Для краткости в приведенном выше примере есть только одна запись, но я работаю над приложением, в котором есть несколько записей.)

1 Ответ

0 голосов
/ 10 марта 2019

Как видно из обзора Gtk + CSS , имена виджетов должны быть в нижнем регистре, а не начинаются с "Gtk":

entry {
    background: yellow;
}
...