我正在使用一个按钮在画布上放置10个按钮。 当我按下按钮一次时,它会生成画布和十个按钮。
for a in range(10):
b=Button(canvas, text=str(a) + "but", font=A12B,
command=lambda : noButs())
b.pack(side='right')
def noButs():
b.destroy()
然而,如果我点击两次,它会生成二十个按钮,并且它不会破坏它们中的任何一个。
有没有办法按名称或实例编号删除特定的小部件? 或者可以获取活动画布的编号并销毁它?
答案 0 :(得分:1)
您应该将按钮放在列表中,然后您可以通过索引销毁它们。 类似的东西:
buttons = []
for a in range(10):
b=Button(canvas, text=str(a) + "but", font=A12B,
command=lambda : noButs())
b.pack(side='right')
buttons.append(b)
def noButs():
for button in buttons:
button.destroy()
buttons = []
def deleteBut(index):
buttons[index].destroy()
del buttons[index]
请注意,这会更改您删除项目后的项目索引。
如果您愿意,可以使用字典,并为每个按钮命名。
每次按下按钮时,请确保不要按钮= []。在按钮操作之外执行(如果使用类添加self.buttons)。