问题描述
我的问题是:我不知道如何设置我的 Checkbutton
以使 Checkbutton
之一可以匹配所有框(这部分已完成),但是当我想要无与伦比的任何其他框,这是可能的。当我使用“所有框”选项运行我的代码部分时,我可以“全部选中”它们,或者全部取下,但是在按下“所有框”按钮后,我无法取消选中“所有框”以外的任何其他框所有盒子”。
onevar = tk.BooleanVar(value=False)
def select_all(): # select all `tk.Checkbutton`
check_buttons_list = [twovar,threevar,fourvar,fivevar,sixvar,sevenvar]
for name in check_buttons_list:
if onevar.get() == True:
name.set(1)
if onevar.get() == False:
name.set(0)
#below the problem,I don't kNow what should I write here:
if name.get() != onevar.set():
return name.set()
twovar = tk.BooleanVar(value=True)
threevar = tk.BooleanVar(value=True)
fourvar = tk.BooleanVar(value=True)
fivevar = tk.BooleanVar(value=True)
sixvar = tk.BooleanVar(value=True)
sevenvar = tk.BooleanVar(value=True)
one = tk.Checkbutton(
content,text="Match ALL",variable=onevar,onvalue=True,bg="red",fg="black",command=select_all,font=font.Font(family='Helvetica',size="9",weight='bold')
)
two = tk.Checkbutton(content,text="Box1",variable=twovar,command=select_all)
three = tk.Checkbutton(content,text="Box2",variable=threevar,command=select_all)
four = tk.Checkbutton(content,text="Box3",variable=fourvar,command=select_all)
five = tk.Checkbutton(content,text="Box4",variable=fivevar,command=select_all)
six = tk.Checkbutton(content,text="Box5",variable=sixvar,command=select_all)
seven = tk.Checkbutton(content,text="Box6",variable=sevenvar,command=select_all)
解决方法
检查按钮 one
的更改使其调用函数 choose
而不是直接调用 select_all
,从而可以处理 return
的结果。
def select_all(): # select all `tk.Checkbutton`
check_buttons_list = [twovar,threevar,fourvar,fivevar,sixvar,sevenvar]
one_test = onevar.get()
result = []
for name in check_buttons_list:
##below the problem,I don't know what should I write here:
if name.get() == one_test:
result.append( name.get() )
else:
result.append( None )
return result
def choose( ):
result = select_all()
if result:
print( result )
您需要将 one
command
更改为 command = choose
只是一个附带问题,定义字体的方法比您选择的方法要简单得多。
font = "Helvetica 9 bold"
会起作用。