Tkinter动态创建的按钮呈现错误的值

时间:2016-03-25 22:14:05

标签: python python-3.x button tkinter

这里有一些(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的副本。我不知道怎么做。那里的答案不能解决我的问题,或者如果他们这样做,这种关系太抽象了,我无法理解。

0 个答案:

没有答案