如何销毁使用for循环生成的按钮(在单击..之后)



我已经生成了按钮,它们的名称基于列表output1

因此,这个程序将分别创建4个按钮,从"key1"到"key4",每当我点击按钮key1时,搜索框B将被替换为";键1";类似地,按键2、按键3、按键4将取代";key2"key3"键4";分别在搜索框B…中

我的目标是,一旦我点击其中一个按钮,它将在搜索框B中插入单词,这4个按钮将自动删除

root = Tk()
def setTextInput(text):
B.delete(0,"end")
B.insert(0, text)
for k in Autput1:
Autput1[k].destroy()    
j=0
if j==0:
output1 = ['key1','key2','key3','key4']

global Autput1
Autput1 = []

k=0

for e in output1:                                                                                             
Autput1.append(Button(root,text=e,command=lambda e=e:setTextInput(str(e))))
Autput1[k].grid()
print(Autput1)
k+=1
A = Label(root,text="Search your song here",font=('Roboto',10),bg='#c4302b')
A.grid(row=0,column=0,columnspan=2,padx=10,pady=10)
B = Entry(root,font=('Roboto',20))
B.grid(row=1,column=0,columnspan=2,padx=10,pady=10)
C= Button(root,image=img,command=getsong)
C.grid(row=1,column=2,padx=10,pady=10)
root.mainloop()   

这是我试图销毁附加在列表Autput1中的按钮的部分。

for k in Autput1:
Autput1[k].destroy()

这是错误,也是我试图修复的唯一问题

TypeError: list indices must be integers or slices, not Button

你可能想知道Autput1 的价值是多少

[<tkinter.Button object .!button2>, <tkinter.Button object .!button3>, <tkinter.Button object 
.!button4>, <tkinter.Button object .!button5>]

当您在Autput上迭代时,因此k是每个按钮,并且不索引:

for k in Autput1:
k.destroy()

如果您使用range(len()),那么它会起作用,因为那时您将使用索引:进行迭代

for k in range(len(Autput1)):
Autput1[k].destroy()

最新更新