清除包含标签

时间:2017-04-06 09:02:09

标签: python-2.7 tkinter

我创建了这样的代码:

import Tkinter as tk
from Tkinter import *

def b(canvas):
    canvas.delete("all")
    canvas.update()
    print "works"

def main(): 
    root = Tk()
    canvas=Canvas(root)
    canvas.config(width=400, height=300)
    bb=Button(canvas, text="ssss",command=lambda:b(canvas))
    bb.place(x=100,y=200)
    root.geometry('400x300')
    aa=Label(canvas,text="aaaaa")
    aa.place(x=10,y=200)           

    canvas.pack()
    root.mainloop()

if __name__ == '__main__':
    main()

问题是,尽管canvas.destroy("all")的函数运行,但点击按钮后标签不会被破坏。

1 个答案:

答案 0 :(得分:1)

调用canvas.delete("all")时不会删除标签,因为您已经使用了地方来显示标签,因此它不是画布的项目。要使标签成为画布项,您需要替换

aa.place(x=10,y=200)

通过

canvas.create_window(10, 200, window=aa)  

然后canvas.delete("all")也会删除标签。