如何在Python Tkinter上删除画布?

时间:2018-07-28 02:21:05

标签: python tkinter

import tkinter
from tkinter import font

def deleteButton(event):
    canvas.delete("tag1")

main = tkinter.Tk()
main.geometry("1280x720+320+180")
main.resizable(0,0)

cv = tkinter.Canvas(main, bg = "turquoise", width = 200, height = 200)
cv.create_polygon(400, 400, 400, 400, fill = "turquoise", tag = "tag1")
cv.place(x = 300, y = 300)
cv.pack()

start_button = tkinter.Button(main, text = "Play!", command = deleteButton, fg =` `"white", bg = "#0A9AFF", relief = "flat")
start_button.place(x = 625, y = 300)

main.mainloop()

运行此代码时,我得到

  

“ TypeError:deleteButton()缺少1个必需的位置参数:   “事件”。”

我已经尝试过.bind,但无法解决。 我想用按钮删除画布,该怎么办?

开始新行不起作用。 谢谢

2 个答案:

答案 0 :(得分:1)

要清除画布,请使用delete方法。为它指定特殊参数“ all”以删除画布上的所有项目(字符串“ all””是代表画布上所有项目的特殊标签):

canvas.delete(“全部”)

如果要删除画布上的某些项目(例如前景对象,而将背景对象保留在显示器上),则可以为每个项目分配标签。然后,您可以提供标签的名称,而不是“全部”。

答案 1 :(得分:0)

使用bind时,它将自动传递代表事件的参数。因此,函数需要接受此参数。使用command=时,没有事件参数,因此您的函数不应接受该参数。

对于错误"NameError: name 'canvas' is not defined",这是因为您已将画布命名为cv,而不是canvas。要删除您特定画布上的项目,应为cv.delete(...),而不是canvas.delete(...)