我想在一個(gè)循環(huán)中制作5個(gè)按鈕,并為每個(gè)按鈕綁定一條命令以打印索引。在以下解決方案中,它始終打印相同的索引。我的代碼是這樣的:for i in range(5): make_button = Tkinter.Button(frame, text ="make!", command= lambda: makeId(i))def makeId(i): print(i)它總是打印5.如何解決此問題?
1 回答

汪汪一只貓
TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
執(zhí)行l(wèi)ambda時(shí),將完成lambdas中變量的解析。此時(shí),對(duì)于所有按鈕,i = 5。要糾正此問題,請(qǐng)執(zhí)行以下操作:
make_button = Tkinter.Button(frame, text ="make!",
command= lambda i=i: makeId(i))
這會(huì)將我創(chuàng)建為lambda中的局部變量。此局部變量將從循環(huán)中保存i的正確值。局部變量可以具有任何名稱,不一定是i,例如command= lambda a=i: makeId(a))。
添加回答
舉報(bào)
0/150
提交
取消