0

tkinter ボタンごとに異なるコードを実行しようとしています。その名前は、リストから呼び出されるまでわかりません。gtk には get label があります (残念ながら gtk は使用できません)。

tkinter で同様のものを実装するにはどうすればよいですか?

def click_one(newbuttonname):
        try:
                writethisdown = open("participantsmovedlog.txt", 'a')
        except:
                pass
        rotatee = newbuttonname
        thispersonwasrotated(rotatee)
        writethisdown.close()

.... その間、makebutton 関数内で:

for someuser in listofusers:
            username = someuser
            newbuttonname = username 
            newbuttonname = Tkinter.Button(win, text = newbuttonname, command = lambda:click_one(username))
            newbuttonname.pack()
4

3 に答える 3

12

ブライアンの答えは、質問に正確に対応していない可能性があります。特に、彼の解決策は、ボタンのテキストが作成後に変更されない場合にのみ機能します。

button.config('text')[-1]

実際のボタンのテキストを返します。

于 2013-01-11T22:53:09.660 に答える
7

あなたはほとんどそこにいます。lambda または functools.partial を介して名前を渡すだけです。

newbuttonname = username 
newbuttonname = Tkinter.Button(win, text = newbuttonname, 
    command = lambda name=username:click_one(name))

これと同じ手法を使用して、実際のウィジェットやその他のデータを渡すことができます。

于 2012-10-12T15:56:23.450 に答える