学习小组,
我正在开发一个带有一排Radiobutton的gui,必须在模式" auto"中禁用。
脚本的一部分:
# define Auto Manual Mode:
def AM_procedure():
global manual
if vam.get()==1:
am_mode.set("Auto")
manual = False
for txt,val in space:
space_button=Radiobutton(root, text = txt, value=val)
space_button.configure(state = 'disabled')
else:
am_mode.set("Manual")
manual = True
for txt,val in space:
space_button=Radiobutton(root, text = txt, value=val)
space_button.configure(state='normal')
print manual
return;
...剪断 按钮:
for txt,val in space:
space_button=Radiobutton(root, text = txt, font=fnt, indicatoron=0, width=8, variable=v, command=ShowChoice,value=val)
space_button.grid(row=8, column=val-1)
for txt,val in AM:
am_button=Radiobutton(root, text = txt, font=fnt, indicatoron=0, width=8, variable=vam, command=AM_procedure, value=val)
am_button.grid(row=9, column=val+1)
空间包含5个元组,AM 2。除其他外,按下自动按钮会使第一行变灰。我尝试了几件事,但我只设置了灰色的最后一个按钮。但是这个脚本没有任何效果。 请指教。 提前致谢, HARKE
答案 0 :(得分:1)
创建这样的小部件的问题:
for i in range(10):
button=Button(root, text = i)
button.grid(column=i)
一旦for
循环结束,没有简单的方法来访问创建的按钮,仍然有一个变量button
,它将指向最后创建的小部件,你可以使用{{1获取root的每个子节点并配置所有子节点:
root.winfo_children()
但如果你在根窗口运行它,它将禁用程序中的所有内容。
您真正需要的是一种保持对您创建的所有按钮的引用的方法:
for w in root.winfo_children():
w.configure(state="disabled")
然后,当您想要配置它们时,您可以使用:
space_buttons = [] #list of space buttons
...
for txt,val in space:
space_button=Radiobutton(root, text = txt, font=fnt, indicatoron=0, width=8, variable=v, command=ShowChoice,value=val)
space_button.grid(row=8, column=val-1)
#add it to the list of space buttons
space_buttons.append(space_button)
唯一可能的问题是,如果for button in space_buttons:
button.configure(state="disabled")
列表在程序中的某个位置发生更改,在这种情况下,您需要一个函数来重新创建按钮:
space
可能是def create_space_buttons():
while space_buttons: #same as while len(space_buttons)>0:
space_buttons.pop().destroy() #remove existing buttons
for txt,val in space:
space_button=Radiobutton(root, text = txt, font=fnt, indicatoron=0, width=8, variable=v, command=ShowChoice,value=val)
space_button.grid(row=8, column=val-1)
#add it to the list of space buttons
space_buttons.append(space_button)
的类似功能。