Tkinter Label Textfarbe ändern

Fragen zu Tkinter.
Antworten
Der_Scripter
User
Beiträge: 26
Registriert: Sonntag 1. September 2019, 15:32

Hallo,

ich möchte wissen, ob es möglich die Textfarbe eines Labels nur teilweise zu ändern.
Also so, dass die eine hälfte z.B. eine andere Farbe hat als die andere.

LG Der_Scripter
Python ist Cool!
Benutzeravatar
peterpy
User
Beiträge: 188
Registriert: Donnerstag 7. März 2013, 11:35

Hallo Du - Der_Scripter,
probier's doch so:

Code: Alles auswählen

import tkinter as tk

def text_in_farben(text):
    root = tk.Tk()    
    anzahl_zeichen = len(text)   
    for position, zeichen in enumerate(text):       
        if position % 4 == 0:
            farbe = 'red'
        elif position % 4 == 1:
            farbe = 'blue'
        elif position % 4 == 2:
            farbe = 'green'
        else:
            farbe = 'black'
        tk.Label(root, text=zeichen, fg=farbe, padx=0, bd=0).pack(side='left')     
   
    root.mainloop()

if __name__ == "__main__":    
    text_in_farben(text='Mein nicht so schöner Text in Farbe')
Gruss
Peter
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Die Textfarbe EINES Labels zu ändern geht nicht. Du kannst es wie von peterpy beschrieben machen, also so dass jeder Buchstabe ein einzelnes Label ist oder du benutzt ein Text Widget oder machst das mit Canvas mit Text.
Der_Scripter
User
Beiträge: 26
Registriert: Sonntag 1. September 2019, 15:32

Hallo nochmal,

ich werde es wahrscheinlich so wie @peterpy machen, das Problem ist nur, dass ich meine Labels nicht "packe" sondern "place"...
Wie kann ich das x-Offset bei jedem einzelnen Buchstaben bekommen?
Bestenfalls auch in einer anderen Schriftfarbe...
Wenn nicht muss ich das offset händisch einprogrammieren

LG Der_Scripter
Python ist Cool!
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Der_Scripter: Verwende kein `place()`. Warum das keine gute Idee ist, merkst Du gerade. 🙂
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Der_Scripter
User
Beiträge: 26
Registriert: Sonntag 1. September 2019, 15:32

Hallo,

ich kann mir nicht vorstellen ein schick aussehendes Layout mit .pack() zu erstellen.
Da schlage ich mich lieber durch Font files.


Wie kann ich dieses Layout mit .pack() erreichen?
Bild
(https://ibb.co/KDTzYsz)

LG Luca
Python ist Cool!
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Der_Scripter: Man kann mit `place()` nicht sinnvoll arbeiten. Du solltest da besser an Deiner Vorstellungskraft arbeiten. Und das Layout auf dem Bild scheint jetzt nicht wirklich schwer zu sein. Label die vertikal gepackt sind und unten ein Frame der Eingabefeld und Schaltfläche enthält.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten