这里有一些(python 3)代码:
from tkinter import *
def makeButtons():
global mainFrame
listy = ["a", "b", "c"]
dicty = {"a":["1", "2", "3"], "b":["4", "5", "6", "7"], "c":["8", "9"]}
buttons = []
for x, item in enumerate(listy):
for y, value in enumerate(dicty[item]):
btn=Button(mainFrame, text=value)
btn.grid(column=x, row=y)
buttons.append(btn)
for i, but in enumerate(buttons):
text = buttons[i]["text"]
but.config(command=lambda *a: vocabMode(i, text))
def vocabMode(i, text):
print(i, text)
root = Tk()
mainFrame = Frame(root)
mainFrame.grid(column=1, row=2)
makeButtons()
root.mainloop()
来吧,跑吧。有用。除了一件小事。
我希望它能打印出标签的文字。但无论我尝试什么,它总是打印创建的最后一个按钮的值。当我想要打印自己的价值时,我无法在任何地方找到解决方案。 谢谢你的帮助。
编辑:据称这是Generating functions inside loop with lambda expression in python的副本。我不知道怎么做。那里的答案不能解决我的问题,或者如果他们这样做,这种关系太抽象了,我无法理解。