Python 如何使用for循环在tkinter中创建菜单?
我想在tkinter中创建一个菜单,列出csv文件中的名称。我使用的是lambda函数,但我不知道如何使按钮执行不同的操作。因为它是最后一个被创造出来的,所以它们都做了和上一个一样的事情。下面是一些代码来演示:Python 如何使用for循环在tkinter中创建菜单?,python,tkinter,menu,Python,Tkinter,Menu,我想在tkinter中创建一个菜单,列出csv文件中的名称。我使用的是lambda函数,但我不知道如何使按钮执行不同的操作。因为它是最后一个被创造出来的,所以它们都做了和上一个一样的事情。下面是一些代码来演示: from tkinter import * def printindex(x): print(x) root = Tk() menu = Menu(root) file = Menu(menu) for i in range(10): file.add_comm
from tkinter import *
def printindex(x):
print(x)
root = Tk()
menu = Menu(root)
file = Menu(menu)
for i in range(10):
file.add_command(label=str(i), command=lambda: printindex(i))
menu.add_cascade(label="File", menu=file)
root.config(menu=menu)
root.mainloop()
当我运行此命令时,菜单中的所有选项都会打印9
我希望菜单中的所有项目都指向相同的函数,但传递各自的值。我该怎么做呢?调用函数时会查找闭包中使用的变量值,在您的例子中,
I
的值是9。您可以修改lambda函数以强制关闭:
command=lambda i=i: printindex(i)