backgroundcolor wieder auf Systemfarbe bzw. transparent

Fragen zu Tkinter.
Antworten
anbabe
User
Beiträge: 12
Registriert: Freitag 4. Dezember 2009, 13:05

Ein kleines Problem, finde jedoch keine Lösung:
Über config kann man ja sehr viele Dinge bei TK ändern, z.B. auch Hintergrundfarben von Labels. Allerdings möchte ich auch die Farbe wieder zurücknehmen bzw. löschen bzw. transparent machen (weiß nicht, wie ich das exakt definieren soll). Ich finde jedoch keine Lösungsmöglichkeit. Hier mal ein Beispiel. Statt bg='green' soll es keine Hintergrundfarbe geben:

Code: Alles auswählen

from Tkinter import *
root = Tk()
def colorchange():
    if var_colorchange.get() == 1:
        textzeile.config(bg='red')
    if var_colorchange.get() == 0:
        textzeile.config(bg='green')# <-- ohne Farbe, wie geht das ???

textzeile = Label(text='TEXT', font=("Arial", 10))
textzeile.place(x= 20,y=10)
var_colorchange = IntVar()
checkbuttonExtraPreis = Checkbutton(variable=var_colorchange, command=colorchange)
checkbuttonExtraPreis.place(x= 20,y=50)

root.mainloop()
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo anbabe

Willkommen in unserem Forum.

Kannst du das folgende Skript einmal ausprobieren:

Code: Alles auswählen

from Tkinter import *
root = Tk()
def colorchange():
    if var_colorchange.get() == 1:
        textzeile.config(bg='red')
    if var_colorchange.get() == 0:
        textzeile.config(bg=text_org_bg)# <-- ohne Farbe, wie geht das ???

textzeile = Label(text='TEXT', font=("Arial", 10))
textzeile.place(x= 20,y=10)
text_org_bg = textzeile.cget("bg")
var_colorchange = IntVar()
checkbuttonExtraPreis = Checkbutton(variable=var_colorchange, command=colorchange)
checkbuttonExtraPreis.place(x= 20,y=50)

root.mainloop()
Gruss wuf :wink:
Take it easy Mates!
anbabe
User
Beiträge: 12
Registriert: Freitag 4. Dezember 2009, 13:05

Hallo wuf,

perfekt! Genau so sollte es funktionieren. Ich hatte schon gedacht, es geht nicht oder es wird kompliziert.
Danke für die schnelle Hilfe. Und natürlich auch Dankesgrüße an die, die dieses Forum ermöglichen.

anbabe
BlackJack

Ansonsten kann man statt das Label direkt zu befragen auch die Tk-Optionen-Datenbank fragen:

Code: Alles auswählen

import Tkinter as tk


def main():
    root = tk.Tk()
    colors = [root.option_get('background', 'Label'), 'red']
    
    def colorchange():
        textzeile['background'] = colors[var_colorchange.get()]
    
    textzeile = tk.Label(text='TEXT', font=('Arial', 10))
    textzeile.pack()
    var_colorchange = tk.IntVar()
    checkbutton_extra_preis = tk.Checkbutton(variable=var_colorchange,
                                             command=colorchange)
    checkbutton_extra_preis.pack()

    root.mainloop()


if __name__ == '__main__':
    main()
Ich habe da ausserdem mal den *-Import und die `place()`-Aufrufe beseitigt.
anbabe
User
Beiträge: 12
Registriert: Freitag 4. Dezember 2009, 13:05

Funktioniert leider nicht. -?
TclError: unknown color name ""
Antworten