|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
下面是我写的程序片段,已经把其他的删除了。
我听过for循环创建了几个复选框,并用bind绑定了同一个操作函数,我想在该函数中获取对应复选框的状态,但是一直没有搞定
event.widget['variable']的类型已经和varlist[1]的类型不一样了。前者是<class '_tkinter.Tcl_Obj'>,后者是<class 'tkinter.IntVar'>,所以不能用get()函数获取其值了
- from tkinter import *
- def cbtcallback(event):#Checkbutton的调用函数
- print(event.widget['text'])
- print(event.widget['variable'])
-
- #这里应该怎么获取对应多选框的状态variable的值,下面的方式是不行的。
- #if event.widget['variable'].get()==1:
- # print('选中了该选项:',event.widget['text'])
- root = Tk()
- frame1=Frame(root)
- frame2=Frame(root)
- varlist=[IntVar(),IntVar(),IntVar()]
- strlist=["我很英俊","我很富有", "我很有才"]
- Checkbuttondict={}
- #for循环生成三个复选框
- for i in range(3):
- CkBt=Checkbutton(frame1, text=strlist[i], variable=varlist[i])
- CkBt.bind("<Button-1>", cbtcallback)
- CkBt.pack()
- Checkbuttondict.setdefault(CkBt,varlist[i])
- frame1.pack(padx=10,pady=10)
- frame2.pack(padx=10,pady=10)
- mainloop()
复制代码
这样好像可以:
- from tkinter import *
- def cbtcallback(event): # Checkbutton的调用函数
- print(event.widget['text'])
- if Checkbuttondict[event.widget].get() == 0:
- print('选中了该选项:', event.widget['text'])
- root = Tk()
- frame1 = Frame(root)
- frame2 = Frame(root)
- varlist = [IntVar(), IntVar(), IntVar()]
- strlist = ["我很英俊", "我很富有", "我很有才"]
- Checkbuttondict = {}
- # for循环生成三个复选框
- for i in range(3):
- CkBt = Checkbutton(frame1, text=strlist[i], variable=varlist[i])
- CkBt.bind("<Button-1>", cbtcallback)
- CkBt.pack()
- Checkbuttondict.setdefault(CkBt, varlist[i])
- frame1.pack(padx=10, pady=10)
- frame2.pack(padx=10, pady=10)
- mainloop()
复制代码
|
|