Seite 1 von 1

backgroundcolor wieder auf Systemfarbe bzw. transparent

Verfasst: Freitag 30. Juli 2010, 09:42
von anbabe
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()

Re: backgroundcolor wieder auf Systemfarbe bzw. transparent

Verfasst: Freitag 30. Juli 2010, 10:18
von wuf
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:

Re: backgroundcolor wieder auf Systemfarbe bzw. transparent

Verfasst: Freitag 30. Juli 2010, 10:29
von anbabe
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

Re: backgroundcolor wieder auf Systemfarbe bzw. transparent

Verfasst: Freitag 30. Juli 2010, 11:01
von 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.

Re: backgroundcolor wieder auf Systemfarbe bzw. transparent

Verfasst: Freitag 30. Juli 2010, 11:13
von anbabe
Funktioniert leider nicht. -?
TclError: unknown color name ""