Beste Möglichkeit zum Festlegen der Hintergrundfarbe für Einträge in Python GTK3 und zum Zurücksetzen auf den Standardwert

Was ist die beste Methode, um die Hintergrundfarbe für einen Eintrag festzulegen und auf die Standardfarbe zurückzusetzen?

Mein Skript funktioniert jetzt, aber ich bin mir sehr sicher, dass dies nicht der beste Weg ist.
Auch ich habe noch zwei Probleme:

Wenn ich einen Text einfüge, der nicht die Zeichenfolge "rot" oder "grün" enthält, und diesen Text auswähle, kann ich meine Auswahl nicht sehen, da alles weiß ist.Ich denke, es gibt bessere Möglichkeiten als die Art, wie ich @ einfüself.entry_default_background_color_str in den CSS-Text.
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from gi.repository import Gdk

class Window(Gtk.Window):

    def __init__(self):

        self.screen = Gdk.Screen.get_default()
        self.gtk_provider = Gtk.CssProvider()
        self.gtk_context = Gtk.StyleContext()
        self.gtk_context.add_provider_for_screen(self.screen, self.gtk_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)


        Gtk.Window.__init__(self, title="Check Input")
        self.set_size_request(300, 80)
        self.mainbox = Gtk.VBox()
        self.add(self.mainbox)

        # entry
        self.name_entry      = Gtk.Entry()
        self.name_entry.set_name("name_entry")
        self.mainbox.pack_start(self.name_entry, True, True, 0)
        self.name_entry.connect("changed", self.check_input)

        entry_context = self.name_entry.get_style_context()
        self.entry_default_background_color = entry_context.get_background_color(Gtk.StateType.NORMAL)
        self.entry_default_background_color_str = self.entry_default_background_color.to_string()

        self.show_all()


    def check_input(self, _widget=None):        
            if "red" in self.name_entry.get_text():
                self.gtk_provider.load_from_data('#name_entry { background: red; }')
            elif "green" in self.name_entry.get_text():
                self.gtk_provider.load_from_data('#name_entry { background: green; }')
            else:
                self.gtk_provider.load_from_data('#name_entry { background: ' + self.entry_default_background_color_str + '; }')


def main():
    window = Window()
    Gtk.main()


if __name__ == "__main__":
    main()

Antworten auf die Frage(2)

Ihre Antwort auf die Frage