在 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 的一个奇怪的怪癖。
我的 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 的一个奇怪的怪癖。