JavaScript
x
13
13
1
from tkinter import *
2
3
root = Tk()
4
5
users = ['Anne', 'Bea', 'Chris', 'Bob', 'Helen']
6
selected_users=[]
7
8
for x in range(len(users)):
9
l = Checkbutton(root, text=users[x][0], variable=users[x])
10
l.pack(anchor = 'w')
11
12
root.mainloop()
13
I have this sample code, I need to make multiple selections in that users
list, after I hit OK
, it stores checked value into another list named selected_users
for later use.
For example, when I run this code, a checkbox window pops out, and I tick Anne
,Bob
, click OK
. selected_users
is now ['Anne','Bob']
. And Window disappears
Advertisement
Answer
You can do this:
JavaScript
1
10
10
1
from tkinter import *
2
root = Tk()
3
users = ['Anne', 'Bea', 'Chris', 'Bob', 'Helen']
4
selected_users=[]
5
for x in range(len(users)):
6
l = Checkbutton(root, text=users[x][0], variable=users[x],command=lambda x=users[x]:selected_users.append(x))
7
l.pack(anchor = 'w')
8
Button(root,text="Ok",command=lambda: [print(selected_users),root.destroy()]).pack()
9
root.mainloop()
10
This will add the value to the list and when you hit Ok
the window will disappear.
Adding more functionality to the program:
JavaScript
1
20
20
1
from tkinter import *
2
root = Tk()
3
users = ['Anne', 'Bea', 'Chris', 'Bob', 'Helen']
4
users_l=[str(i) for i in range(len(users))]
5
selected_users=[]
6
def add_remove(user,var):
7
if var.get()==0:
8
try:
9
selected_users.remove(user)
10
except KeyError:
11
pass
12
else:
13
selected_users.append(user)
14
for x in range(len(users)):
15
users_l[x]=IntVar(0)
16
l = Checkbutton(root, text=users[x], variable=users_l[x],offvalue=0,onvalue=1,command=lambda x=users[x],y=users_l[x]:add_remove(x,y))
17
l.pack(anchor = 'w')
18
Button(root,text="Ok",command=lambda: [print(selected_users),root.destroy()]).pack()
19
root.mainloop()
20