So here’s my code
JavaScript
x
35
35
1
root = Tk()
2
3
# 1st frame
4
frame_1 = LabelFrame(root)
5
frame_1.pack()
6
7
#var
8
var = IntVar()
9
var.set(0)
10
test = ['test1', 'test2', 'test3', 'test4']
11
12
# radio button
13
radio_1 = Radiobutton(frame_1, text = test[0], value = 1, variable = var)
14
radio_1.pack()
15
radio_2 = Radiobutton(frame_1, text = test[1], value = 2, variable = var)
16
radio_2.pack()
17
radio_3 = Radiobutton(frame_1, text = test[2], value = 3, variable = var)
18
radio_3.pack()
19
20
# 2nd frame
21
frame_2 = LabelFrame(root)
22
frame_2.pack()
23
24
# buttons
25
button_1 = Button(frame_2, text = test[0], state = DISABLED)
26
button_1.pack()
27
button_2 = Button(frame_2, text = test[1], state = DISABLED)
28
button_2.pack()
29
button_3 = Button(frame_2, text = test[2], state = DISABLED)
30
button_3.pack()
31
button_4 = Button(frame_2, text = test[3], state = DISABLED)
32
button_4.pack()
33
34
root.mainloop()
35
What I’m trying to do is have the buttons enabled when the radio buttons are selected. Here’s what I tried.
JavaScript
1
9
1
def changeState():
2
if var.get() != 0:
3
button_1['state'] = NORMAL
4
button_2['state'] = NORMAL
5
button_3['state'] = NORMAL
6
button_4['state'] = NORMAL
7
8
changeState()
9
I believe this only sets it initially, and when I select a radio button or change it, it doesn’t update. I think I can use command inside the buttons but don’t understand how to go about it.
Advertisement
Answer
I added four function., Then in Radiobutton
, I added command=changeState
for each Radiobuuton
.
Try this:
JavaScript
1
69
69
1
from tkinter import *
2
3
root = Tk()
4
5
# 1st frame
6
frame_1 = LabelFrame(root)
7
frame_1.pack()
8
9
#var
10
var = IntVar()
11
var.set(0)
12
test = ['test1', 'test2', 'test3', 'test4']
13
14
def changeState1():
15
if var.get() !=0:
16
button_1['state'] = NORMAL
17
button_2['state'] = DISABLED
18
button_3['state'] = DISABLED
19
button_4['state'] = DISABLED
20
21
def changeState2():
22
if var.get() !=0:
23
button_1['state'] = DISABLED
24
button_2['state'] = NORMAL
25
button_3['state'] = DISABLED
26
button_4['state'] = DISABLED
27
28
29
def changeState3():
30
if var.get() !=0:
31
button_1['state'] = DISABLED
32
button_2['state'] = DISABLED
33
button_3['state'] = NORMAL
34
button_4['state'] = DISABLED
35
36
def changeState4():
37
if var.get() !=0:
38
button_1['state'] = DISABLED
39
button_2['state'] = DISABLED
40
button_3['state'] = DISABLED
41
button_4['state'] = NORMAL
42
43
# radio button
44
radio_1 = Radiobutton(frame_1, text = test[0], value = 1,command=changeState1, variable = var)
45
radio_1.pack()
46
radio_2 = Radiobutton(frame_1, text = test[1], value = 2, command=changeState2, variable = var)
47
radio_2.pack()
48
radio_3 = Radiobutton(frame_1, text = test[2], value = 3,command=changeState3, variable = var)
49
radio_3.pack()
50
radio_4= Radiobutton(frame_1, text = test[2], value = 3,command=changeState4, variable = var)
51
radio_4.pack()
52
53
# 2nd frame
54
frame_2 = LabelFrame(root)
55
frame_2.pack()
56
57
# buttons
58
button_1 = Button(frame_2, text = test[0], state = DISABLED)
59
button_1.pack()
60
button_2 = Button(frame_2, text = test[1], state = DISABLED)
61
button_2.pack()
62
button_3 = Button(frame_2, text = test[2], state = DISABLED)
63
button_3.pack()
64
button_4 = Button(frame_2, text = test[3], state = DISABLED)
65
button_4.pack()
66
67
root.mainloop()
68
changeState()
69