gpt4 book ai didi

python - 访问 tkinter 按钮中的文本以在命令中使用

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:10 27 4
gpt4 key购买 nike

我正在 TKinter 中创建键盘。按下一个按钮应该只打印出该按钮的文本。由于某种原因,每个按钮都会打印出 ctrl,这是最后创建的按钮。我如何更改它以便它实际打印出每个按钮的相应文本?

 def press(key):
print(key)

def createWidgets(self):
for tup in layout.layout:
for key, value in tup:
button = Button(self, text=key, command=lambda: self.press(key))
self.kboard_buttons.append(button)
button.pack(side="left")

最佳答案

lambda 函数内的表达式在函数被调用 时计算,而不是在定义时计算。这意味着 key 在:

command=lambda: self.press(key)

将始终引用 for 循环中 key 保存的最后一个值。

您可以通过简单地捕获 key 的值作为 lambda 的默认参数来解决这个问题:

command=lambda key=key: self.press(key)

因为在定义函数时会评估默认参数,这将确保 lambda 中的 key 引用 key 的当前值> 在 for 循环内而不是最后一个值。

关于python - 访问 tkinter 按钮中的文本以在命令中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26876623/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com