0

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」をオブジェクトの名前ではなく文字列として解釈します。私は不可能なことをしようとしていますか?

4

2 に答える 2

6

ウィジェット自体のリストを作成できます。

widgets = [deadparrotlabel, sillywalkslabel, ... ]
for w in widgets:
    w.config(state=DISABLED)
于 2012-12-26T14:48:41.070 に答える
0

Nedが正解だと思いますが、一般的に、実際に文字列があり、使用できるオブジェクトがない場合は、次のようにします。

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

ただし、これが必要な場合は十分に注意してください。設計プロセスで問題が発生した可能性が高いためです。

余談ですが、おそらくlocals()もっと良いでしょうが、伝えるのは難しいです...

于 2012-12-26T14:53:41.837 に答える