tkinterを使って以下のプログラムを作ったのですが、0のボタンのどちらを押しても1がプリントされてしまいます(0のボタンを押したら0がプリントされるプログラムを作ろうとしていました)。これは何故でしょうか?理由を知りたいです。
python3.10
1 2import tkinter as tk 3root=tk.Tk() 4b=[] 5for i in range(2): 6 b.append(tk.Button(root,text=str(i),command=lambda:print(i))) 7b[0].pack() 8b[1].pack() 9root.mainloop()
ちなみに、以下のプログラムだと0のボタンを押したら0がプリントされます。
python3.10
1 2import tkinter as tk 3root=tk.Tk() 4def pr(n): 5 return lambda:print(n) 6for i in range(2): 7 B=tk.Button(root,text=str(i),command=pr(i)) 8 B.pack() 9root.mainloop()
以下のプログラムだと、0のボタンを押しても1がプリントされます。
python3.10
1 2import tkinter as tk 3root=tk.Tk() 4 5for i in range(2): 6 B=tk.Button(root,text=str(i),command=lambda:print(i)) 7 B.pack() 8root.mainloop()
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。