Tkinter按钮功能

时间:2018-10-17 13:15:33

标签: python function tkinter

我试图在Tkinter中使用GUI按钮,并且在尝试使用它们时遇到问题。这段代码应该(至少我期望如此)生成一些按钮,单击这些按钮可以打印出所显示的字母。但是,无论按下哪个按钮,它始终会打印出最后生成的按钮的结果。我应该使用类似的功能吗?

import tkinter  

win = tkinter.Tk()
players = ["A","B","C","D"]

for p in players:
    playerBtn = tkinter.Button(win,text=p,command=lambda : print(p))
    playerBtn.pack()

tkinter.mainloop()

1 个答案:

答案 0 :(得分:1)

之所以会这样,是因为lambda只是查找p的全局值。要进行更改,我们将执行以下操作-

import tkinter  

win = tkinter.Tk()
players = ["A","B","C","D"]

for p in players:
    player_button = tkinter.Button(win, text=p, command=lambda button_text=p: print(button_text))
    player_button.pack()

tkinter.mainloop()

在Ubuntu 18.04上进行了测试,它可以按您的意愿工作。

有关此行为的更多详细信息,请参见this SO帖子。