Переменная радиобутона не изменяет значение в Python (TKinter)
Я работаю над деятельностью для университета и придерживаюсь еще одной проблемы. Я охотился в сети, но нигде не говорит мне, что я сделал неправильно. Мы должны создать 12 блоков, установленных в 3 столбцах по 4, с переключателем под каждым столбцом. Когда переключатель выбран, цвет блоков должен меняться. Когда переключатель не выбран, они должны вернуться к своему первоначальному цвету.
После добавления оператора if для определения значения переменной для переключателей ничего не происходит.
Вот мой код:
# 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()
Любая помощь приветствуется! Спасибо
1 ответ
Решение
radio_var
это объект. Вам нужно использовать radio_var.get()
для того, чтобы правильно получить значения.