我刚开始使用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'”有关。功能,但我迷路了。
感谢您的帮助!