在Python中使用for循环设置对象列表的属性

2024-09-26 17:52:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个Python程序,需要将一组tkinter小部件从enabled切换到disabled,然后再切换回来。我可以这样做。。。你知道吗

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循环和list之类的。我只是不知道如何让它工作,甚至它是否可以做到。这是我尝试过的,但没有成功:

labellist = ['deadparrotlabel', 'sillywalkslabel', 'vikingslabel', 'dinsdalelabel', 'antpoetrylabel', 'lumberjacklabel', 'nudgenudgelabel', 'saynomorelabel', 'crunchyfroglabel', 'larksvomitlabel']
for i in lablelist:
    i.config(state=DISABLED)

Python将“i”解释为字符串,而不是对象的名称。我想做不可能的事吗?你知道吗


Tags: 程序configforstatedisabledsaynomorelabelvikingslabeldinsdalelabel
2条回答

您可以列出小部件本身:

widgets = [deadparrotlabel, sillywalkslabel, ... ]
for w in widgets:
    w.config(state=DISABLED)

我认为Ned的答案是正确的,但是,一般来说,如果你确实有一个字符串,而不是一个可以使用的对象,那么:

widgets = ['a', 'b', 'c']
for w in widgets:
    globals()[w].config(state=DISABLED)

但是,如果你觉得有必要的话,要非常小心——因为在你的设计过程中很可能出了问题。。。你知道吗

顺便说一句-也许locals()会更好-但很难说。。。你知道吗

相关问题 更多 >

    热门问题