Seite 1 von 1

Checkbox selectcolor im Darkmode ändert seine Farbe nicht

Verfasst: Donnerstag 5. Dezember 2019, 12:24
von Count
Schönen guten Tag.

Ich würde gerne einen "darkmode" in mein Programm mit einbauen.
Soweit funktioniert er auch, nur bei der Checkbox macht er Problem.
Evtl. könnt ihr mir ja helfen, dass "selectcolor" in der Checkbox auch seine Farbe ändert.
bekomme es einfach nicht hin, egal was ich bis jetzt versucht habe.

Alternative wäre den Haken eine andere Farbe zu geben als die Schrift, dazu habe ich allerdings nichts gefunden.

(Das mit den Variablen ist nicht schön, aber es funktioniert ^^)


hier wie ich es mir gedacht habe und nicht funktioniert:

Code: Alles auswählen

from tkinter import *
test = Tk()
c='yellow'								#Standard

def action_dark():
    for widget in test.winfo_children():
        widget.configure(bg='black')
        widget.configure(fg='white')
        test.configure(bg='black')
    c='blue'								#if action_dark()

def action_bright():
    for widget in test.winfo_children():
        widget.configure(bg='white')
        widget.configure(fg='black')
        test.configure(bg='white')
    c='red'								#if action_bright()

menuleiste = Menu(test)
datei_menu = Menu(menuleiste, tearoff=0, fg='black', bg='white',activebackground='red')
datei_menu.add_command(label='dunkl', command=action_dark)
datei_menu.add_separator()
datei_menu.add_command(label='hell', command=action_bright)
menuleiste.add_cascade(label='Farbe', menu=datei_menu)
test.config(menu=menuleiste)

Label(test, text='test \n auch ein test').pack(side=TOP, anchor=CENTER, ipady=15)

var1 = IntVar()
Checkbutton(test, text='test1', selectcolor=c, variable=var1).pack(side=TOP, anchor=W, ipadx=70, ipady=5)
var2 = IntVar()
Checkbutton(test, text='test2', selectcolor=c, variable=var2).pack(side=TOP, anchor=W, ipadx=70, ipady=5)
var3 = IntVar()
Checkbutton(test, text='test3', selectcolor=c, variable=var3).pack(side=TOP, anchor=W, ipadx=70, ipady=5)
      
test.mainloop()

Danke im Voraus.

Re: Checkbox selectcolor im Darkmode ändert seine Farbe nicht

Verfasst: Donnerstag 5. Dezember 2019, 14:22
von pyranha
Hallo zusammen,

ich denke, die Ursache ist, dass in Deinen Funktionen action_dark() bzw. action_bright() lediglich der Wert der Variable c geändert wird. Allerdings ändert sich damit nicht automatisch die entsprechende Eigenschaft des widgets.

Eventuell kommst Du weiter, wenn Du:

1) Beim Erstellen der Checkbuttons diese je einer Variablen zuweist und seperat(!) packst....

Code: Alles auswählen

var1 = IntVar()
c_button1 = Checkbutton(test, text='test1', selectcolor=c, variable=var1)
c_button1.pack(side=TOP, anchor=W, ipadx=70, ipady=5)
2) In den Funktionen die Eigenschaft selectcolor per config änderst.

Code: Alles auswählen

def action_dark():
    for widget in test.winfo_children():
        widget.configure(bg='black')
        widget.configure(fg='white')
        test.configure(bg='black')
    c_button1.config(selectcolor='blue')
Vielleicht hilft Dir das weiter!
Schöne Grüße!

Re: Checkbox selectcolor im Darkmode ändert seine Farbe nicht

Verfasst: Donnerstag 5. Dezember 2019, 14:46
von Count
Danke, das klappt !

Ist bestimmt nicht die schönste Lösung, aber es ist eine Lösung.
Und bei meinem Code, der eh noch viel zu lang ist fällt das auch gar nicht auf :D