2016-05-06 12 views
0

Ich arbeite an einer Aktivität für die Universität und bin auf ein weiteres Problem. Ich habe im Netz gejagt, aber nirgends sagt es mir, was ich falsch gemacht habe. Wir müssen 12 Boxen erstellen, die in 3 Spalten von 4 mit einem Optionsfeld unter jeder Spalte erstellt werden. Wenn das Optionsfeld ausgewählt ist, soll sich die Farbe der Felder ändern. Wenn die Optionsschaltfläche nicht ausgewählt ist, sollen sie zu ihrer ursprünglichen Farbe zurückkehren.Radiobutton Variable nicht ändern in Python (TKinter)

Nachdem ich meine if-Anweisung hinzugefügt habe, um zu bestimmen, was der Variablenwert für die Optionsfelder ist, passiert überhaupt nichts.

Hier ist mein Code:

# Import the Tkinter functions 
from Tkinter import * 

# Create a window 
the_window = Tk() 
the_window.geometry('460x200') 

# Give the window a title 
the_window.title('Show Columns') 

#Declare Radio Variable 
radio_var = IntVar(value=0) 

#Change first set colour 
def change_first_set_colour(): 

    #Determine colour to display 
    if radio_var == 1: 
     label1.configure(bg="blue") 
     label2.configure(bg="blue") 
     label3.configure(bg="blue") 
     label4.configure(bg="blue") 
    else: 
     label1.configure(bg="grey") 
     label2.configure(bg="grey") 
     label3.configure(bg="grey") 
     label4.configure(bg="grey") 

#Change first set colour 
def change_second_set_colour(): 

    #Determine colour to display 
    if radio_var == 2: 
     label1.configure(bg="blue") 
     label2.configure(bg="blue") 
     label3.configure(bg="blue") 
     label4.configure(bg="blue") 
    else: 
     label1.configure(bg="grey") 
     label2.configure(bg="grey") 
     label3.configure(bg="grey") 
     label4.configure(bg="grey") 

#Change first set colour 
def change_third_set_colour(): 

    #Determine colour to display 
    if radio_var == 3: 
     label1.configure(bg="blue") 
     label2.configure(bg="blue") 
     label3.configure(bg="blue") 
     label4.configure(bg="blue") 
    else: 
     label1.configure(bg="grey") 
     label2.configure(bg="grey") 
     label3.configure(bg="grey") 
     label4.configure(bg="grey") 

#Create label1 
label1 = Label(the_window, bg="grey", fg="black", width=20, height=2) 
label1.place(x=5, y=5) 

#Create label2 
label2 = Label(the_window, bg="grey", fg="black", width=20, height=2) 
label2.place(x=5, y=45) 

#Create label3 
label3 = Label(the_window, bg="grey", fg="black", width=20, height=2) 
label3.place(x=5, y=85) 

#Create label4 
label4 = Label(the_window, bg="grey", fg="black", width=20, height=2) 
label4.place(x=5, y=125) 

#Create Radio Button 1 
Radio_1 = Radiobutton(the_window, 
         text="First", 
         variable=radio_var, 
         command=change_first_set_colour, 
         value=1) 
Radio_1.place(x=50, y=165) 

#Create label5 
label5 = Label(the_window, bg="grey", fg="black", width=20, height=2) 
label5.place(x=155, y=5) 

#Create label6 
label6 = Label(the_window, bg="grey", fg="black", width=20, height=2) 
label6.place(x=155, y=45) 

#Create label7 
label7 = Label(the_window, bg="grey", fg="black", width=20, height=2) 
label7.place(x=155, y=85) 

#Create label8 
label8 = Label(the_window, bg="grey", fg="black", width=20, height=2) 
label8.place(x=155, y=125) 

#Create Radio Button 2 
Radio_2 = Radiobutton(the_window, 
         text="Second", 
         variable=radio_var, 
         command=change_second_set_colour, 
         value=2) 
Radio_2.place(x=180, y=165) 

#Create label9 
label9 = Label(the_window, bg="grey", fg="black", width=20, height=2) 
label9.place(x=305, y=5) 

#Create label10 
label10 = Label(the_window, bg="grey", fg="black", width=20, height=2) 
label10.place(x=305, y=45) 

#Create label11 
label11 = Label(the_window, bg="grey", fg="black", width=20, height=2) 
label11.place(x=305, y=85) 

#Create label12 
label12 = Label(the_window, bg="grey", fg="black", width=20, height=2) 
label12.place(x=305, y=125) 

Radio_3 = Radiobutton(the_window, 
         text="Third", 
         variable=radio_var, 
         command=change_third_set_colour, 
         value=3) 
Radio_3.place(x=345, y=165) 

#---------------------------------------------------------------- 

# Start the event loop to react to user inputs 
the_window.mainloop() 

Jede Hilfe wäre sehr willkommen! Danke

Antwort

1

radio_var ist ein Objekt. Sie müssen radio_var.get() verwenden, um die Werte korrekt abzurufen.