tkinter 中使用的奇怪的 lambda 结构

Strange lambda construct used in tkinter

我正在尝试使用 Tkinter 创建一个虚拟键盘,我正在尝试做一些事情 类似于下面提供的代码。我在理解下面代码中的 lambda 结构时遇到了问题,据我所知,这是唯一无需为键盘上存在的每个字母编写按钮小部件的方法。 我一直都明白,当你使用 lambda 时,你会做一些类似的事情:

variable = lambda x: x+5

但在下面提供的代码中,Button 小部件有一个 lambda 我以前从未见过这样写的:

command=lambda value=text: select(entry, value)

我花了一整天阅读有关 lambda 的内容,但我仍然无法理解。

这是代码link:

具体来说,这是我遇到问题的行:

tk.Button(window, text=text, width=width,
          command=lambda value=text: select(entry, value),
          padx=3, pady=3, bd=12, bg="black", fg="white", takefocus = False
         ).grid(row=y, column=x, columnspan=columnspan)

我的问题是我不知道你可以在 lambda 上使用默认参数....我很惊讶没有多少人意识到我是多么愚蠢。

command=lambda value=text: select(entry, value)

如果 text 是一个变量,value 或 value=text 是一样的。那是 我的问题