使用实例编号销毁特定的Python小部件?

时间:2015-09-19 20:14:50

标签: python tkinter

我正在使用一个按钮在画布上放置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()

然而,如果我点击两次,它会生成二十个按钮,并且它不会破坏它们中的任何一个。

有没有办法按名称或实例编号删除特定的小部件? 或者可以获取活动画布的编号并销毁它?

1 个答案:

答案 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)。