在 for 循环中从列表中删除项目

Remove item from list in a for loop

我的 tkinter window 中有一个 for 循环,它为列表中的每个项目创建一个标签和一个按钮。我想要相应列表项的按钮从列表中删除该项目,但无论我单击哪个按钮,最后一个元素总是被删除!有人可以帮忙吗?

我的代码:

import tkinter
import ntkutils

list = [1, 2, 3, 4, 5, 6]
root = tkinter.Tk()

def refresh():
    y = 40

    def pressed(i):
        list.remove(i)
        ntkutils.clearwin(root)
        refresh()

    for index in list:
        tkinter.Label(text=index).place(x=40, y=y)
        tkinter.Button(text="-", command=lambda:pressed(index)).place(x=100, y=y)
        y = y+20

refresh()
root.mainloop()

PS:ntkutils.clearwin 只是删除了 window 的所有内容。

按照以下更改您的 lambda 表达式。

tkinter.Button(text="-", command=lambda x=index:pressed(x)).place(x=100, y=y)

这将使用 for 循环的值,而不是始终使用最后一个值。 lambda 的一个奇怪的怪癖。