我编写了一个Python程序,我需要将一组tkinter小部件从启用切换到禁用再返回。我可以这样做......
deadparrotlabel.config(state=DISABLED)
sillywalkslabel.config(state=DISABLED)
vikingslabel.config(state=DISABLED)
dinsdalelabel.config(state=DISABLED)
antpoetrylabel.config(state=DISABLED)
lumberjacklabel.config(state=DISABLED)
nudgenudgelabel.config(state=DISABLED)
saynomorelabel.config(state=DISABLED)
crunchyfroglabel.config(state=DISABLED)
larksvomitlabel.config(state=DISABLED)
但我觉得应该有一种更有效的方式,使用for循环和列表或其他东西。我只是不知道如何让它工作,甚至可以做到。这是我尝试过的但是没有用:
labellist = ['deadparrotlabel', 'sillywalkslabel', 'vikingslabel', 'dinsdalelabel', 'antpoetrylabel', 'lumberjacklabel', 'nudgenudgelabel', 'saynomorelabel', 'crunchyfroglabel', 'larksvomitlabel']
for i in lablelist:
i.config(state=DISABLED)
Python将'i'解释为字符串而不是对象的名称。我想做不可能的事吗?
答案 0 :(得分:5)
您可以自己制作小部件列表:
widgets = [deadparrotlabel, sillywalkslabel, ... ]
for w in widgets:
w.config(state=DISABLED)
答案 1 :(得分:0)
我认为Ned是正确的答案,但是,一般来说,如果确实确实有一个字符串,而不是一个可以使用的对象,那么:
widgets = ['a', 'b', 'c']
for w in widgets:
globals()[w].config(state=DISABLED)
但是,如果您发现需要,请务必小心 - 因为您的设计过程中可能出现问题......
暂时不说 - 或许locals()
会更好 - 但很难说......