【问题标题】:tkinter button is not giving the correct parameter [duplicate]tkinter 按钮未提供正确的参数 [重复]
【发布时间】:2020-01-19 16:23:07
【问题描述】:

我正在练习 tkinter,但遇到了一个问题。

我需要在for循环中创建几个按钮,并根据循环的迭代给它一个命令。

但无论我按什么按钮,输出始终是“d”。 这是一个简化版:

from tkinter import *

root = Tk()

def write(n):
    print(n)

indexes = ['a','b','c','d']

for i in range(len(indexes)):
    button = Button(root, text=indexes[i], command=lambda:write(indexes[i]))
    button.grid(row=0, column=i)

root.mainloop()

有人知道该怎么做吗?谢谢

【问题讨论】:

  • 难道不是因为命令lambda:write(indexes[i]) 仅在按下按钮时才被评估,因此它执行lambda:write('d') 因为3 是i 的最后一个值导致它返回@ 987654326@.
  • 有道理,我试着编辑一下
  • command=lambda i=i:write(indexes[i]).

标签: python tkinter


【解决方案1】:

试试这个代码:

from tkinter import *

root = Tk()

def write(n):
    print(n)

indexes = ['a','b','c','d']

for i in range(len(indexes)):
    button = Button(root, text=indexes[i], command = lambda i=i:write(indexes[i]))
    button.grid(row=0, column=i)

root.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 2016-10-23
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    相关资源
    最近更新 更多