在字典问题中创建Tkinter按钮

时间:2014-12-23 11:31:04

标签: python tkinter

我刚开始使用tkinter并遇到了一个小问题:

我试图在循环创建的字典中创建tkinter按钮。此循环用于自动创建按钮。这是一个给出我想要的结果的例子(没有循环):

from tkinter import *

letters = ['a','b','c']

root = Tk()

buttons = {}

buttons['a'] = Button(root, text = 'a', command = lambda: print('a'))
buttons['b'] = Button(root, text = 'b', command = lambda: print('b'))
buttons['c'] = Button(root, text = 'c', command = lambda: print('c'))

buttons['a'].pack()
buttons['b'].pack()
buttons['c'].pack()

root.mainloop()

因此,每当我点击一个按钮,它就会打印出它的名字。

现在我尝试使用' for'来实现自动化。循环如此:

from tkinter import *

letters = ['a','b','c']

root = Tk()

buttons = {}
for u in letters:
    buttons[u] = Button(root, text = u, command = lambda: print(u))
    buttons[u].pack()

root.mainloop()

但是它没有工作!它只是打印' c'每一次,我都不明白为什么。我猜它与“lambda'”有关。功能,但我迷路了。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在这里找到一个效果很好的答案!我一定不够搜索:/ Tkinter assign button command in loop with lambda