我创建了这样的代码:
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")
的函数运行,但点击按钮后标签不会被破坏。
答案 0 :(得分:1)
调用canvas.delete("all")
时不会删除标签,因为您已经使用了地方来显示标签,因此它不是画布的项目。要使标签成为画布项,您需要替换
aa.place(x=10,y=200)
通过
canvas.create_window(10, 200, window=aa)
然后canvas.delete("all")
也会删除标签。