※つまづいているのはPythonの仕様を僕が知らないからかもしれませんので、Tkinterをご存知でない方も一読いただければと思います。初心者ですが、よろしくお願いします。
Tkinterで複数個のボタンをfor文で一気に配置します。
各ボタンには別々のコマンドを設定したいのですが、for文を回した後には意図したものとは違うコマンドに設定されてしまいます。
↓↓詳細↓↓
Python
1import Tkinter as Tk 2 3def button_cmd(i): 4 print "%s pressed!"%i 5 6root = Tk.Tk() 7buttons = [] 8for i in range(5): 9 buttons.append(Tk.Button(root,text=i,command=lambda:button_cmd(i))) #←ここだけ見てください 10 buttons[-1].place(x=20,y=20+30*i) #←ボタンを配置してるだけ 11 12root.mainloop()
各ボタンが押された時、 button_cmd(i) という関数を走らせます。ボタンは5つ置きましたが、それぞれ違う動作をさせます(この場合はどのボタンが押されたか、その番号を表示させる)。
ですが、これで実際に実行してみると、どのボタンを押しても "4 pressed!"と表示されてしまいます。おそらく、for文を抜けた後はi=4になってるが故、どのボタンを押してもそう表示されるようになってしまっていると思うのですが。。。
for文を使わずに1個ずつ配置すればこのようにならない事は分かりますが、数が多いのでできるだけfor文を使いたいです。解決方法を思いつきの方、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/19 03:24
2016/07/19 06:42