Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用for循环在tkinter中创建菜单?_Python_Tkinter_Menu - Fatal编程技术网

Python 如何使用for循环在tkinter中创建菜单?

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

我想在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_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)