Tkinter Schriftfarbe im Text Widget abfragen?

  • Hallo zusammen,

    Ich möchte die Schriftfarbe ändern und danach wieder die voreingestellte Systemschriftfarbe setzten. Nur wie frage ich die foreground Farbe einer Textstelle ab? Ggf. tun es auch die Einstellungen der Eltern Objekte oder des leeren Text Widgets. Ich nutze nur Textausgabe ohne mainloop und möchte Fehler und Warnungen farblich (rot) hervor heben. Setzen der Text Position und Ändern von Font, Schriftgröße, foreground etc. sind bekannt und in den Quellen gut dokumentiert. Man kann allgemein nicht von Schriftfarbe schwarz ausgehen.

    Auf die Schnelle habe ich eine gute Handvoll Tkinter PDFs quergelesen und bin nicht über das Passende gestolpert.

    Kann mich bitte jemand mit der Nase auf die Lösung stoßen?

    Grüße

  • Hallo,


    die `Text` Klasse hat eine Methode Namens `config`. Damit bekommst du die ganzen Einstellungen des Text-Widges. Mit z.B. `tW.config('fg')` bekommst du die aktuelle Schriftfarbe.


    Gruß, noisefloor

  • Iteriert durch verschiedene Fonts und wechselt diese dann.

    Ich bin etwas überrascht, dass das mit dem Zuweisen auch so funktioniert.




    PS: Das Beispiel ist umgekehrt. Das Abfragen funktioniert genauso, ist dann aber keine Zuweisung mehr.

    Python
    from tkinter import Tk, Label
    
    
    root = Tk()
    l = Label(root, text="Hello World", font=("Arial", 48))
    l.pack()
    
    print(l["text"], l["font"])
    Quote

    Hello World Arial 48

  • ClimberWue Ohne `mainloop()` ist keine gute Idee und von `update()` wird eher abgeraten, weil das nicht wirklich re-entrant ist, das heisst wenn während des `update()` irgend ein Ereignis behandelt wird was wieder `update()` aufruft, dann kann das gutgehen, muss es aber nicht.

    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger Dijkstra

  • ich habe als Fenster-Neuling auf Pi nach einer einfachen Lösung gesucht Text in ein Fenster auszuzugeben. Was meine Lösung bisher leistete.

    User Interaktionen finden am Zielsystem nicht statt, also werden vom Programm direkt keine Events durch Maus- oder Tastatureingaben etc. ausgewertet. Die Messdatenerfassung dauert etwa 5 Sekunden danach wird update() durchgeführt und eine definierte Zeit gewartet (zusammen 10-60 bis x Sekunden. Somit vermeidet man die Unruhe durch permanentes Scrollen in einem Shell Fenster.

    Ggf. gibt es eine permanente Anzeige im Gewächshaus auf einem günstigen, verbrauchsarmen Medium z.B. E-Paper, E-Ink.

    Ggf. kommt ein LoRa Kanal zum WLAN hinzu um Abhängigkeiten von Störungen der WLAN Datenübertragung durch Wetter etc. zu verringern.

    Auswertung mit Persistenz (DB) und Event-/Nachrichten-Generierung (Logik) finden auf einem Raspberry Hausserver PI 4 mit 4GB statt.

    Unterm Dach werkelt dazu noch ein PI 3 A+ als LoRa Gateway/Konzentrator.


    Ich werde das Steuerungs- und Erfassungssystem weiter laufen lassen und auf Inkonsistenzen achten.

    Folgende PDFs habe ich aufgestöbert

    - Programmin Python, Teil II: Grafisches Programmieren mit TKinter von Heiko Schröder

    - Learning Tkinter, Packt, Free ebook

    - Python Tkinter By Example, David Love

    - tk_tools Documentation, Jason R. Jones

    - Tkinter GUI Programming by Example, Packt, David Love

    - Python GUI mit TKinter - Kurze Einführung, Angewandte Informatik INFAP4

    - Tkinter 8.5 reference: a GUI for Python, JohnW. Shipman


    Großen Aufwand will ich jedenfalls nicht betreiben ;)