按下按钮后禁用Tkinter所有Checkbutton复选框的实现方法
解决方案
要实现点击确认按钮后禁用所有复选框的需求,只需要对原有代码做两处小调整:
- 新增列表存储循环生成的所有Checkbutton组件实例——原有代码只保存了绑定的数值变量,无法直接操作组件本身的状态
- 在按钮回调函数获取完选中项之后,遍历所有Checkbutton实例,设置状态为
tk.DISABLED,组件就会变为不可点击的灰化状态
修改后的完整可运行代码如下:
import tkinter as tk root = tk.Tk() INGREDIENTS = ['cheese', 'ham', 'pickle', 'mustard', 'lettuce'] txt = tk.Text(root, width=40, height=20) variables = [] # 新增列表存储所有复选框组件实例 checkbuttons = [] for i in INGREDIENTS: variables.append(tk.IntVar(value=0)) cb = tk.Checkbutton(txt, text=i, variable=variables[-1]) checkbuttons.append(cb) txt.window_create("end", window=cb) txt.insert("end", "\n") txt.pack() def read_ticks(): result = [ing for ing, var in zip(INGREDIENTS, variables) if var.get()>0] print(result) # 遍历所有复选框,设置为禁用状态 for cb in checkbuttons: cb.config(state=tk.DISABLED) but = tk.Button(root, text='确认', command=read_ticks) but.pack() root.mainloop()
补充说明:如果后续需要恢复复选框的交互能力,只需要遍历同一份组件列表,将状态设置为
tk.NORMAL即可。
内容的提问来源于stack exchange,提问作者hellomynameisA
相关产品推荐
相关产品推荐

