作者自我介绍:大爽歌, b站小UP主 ,直播编程+红警三 ,python1对1辅导老师 。
对于用Canvas来实现简单游戏的程序来说,
delete
方法,是一个很重要的方法。
但是官方文档上好像并没有详细解释该方法,网上搜到的关于这个方法的教程比较零乱。
所以我选择直接去看该方法源码。
def delete(self, *args):
"""Delete items identified by all tag or ids contained in ARGS."""
self.tk.call((self._w, 'delete') + args)
看源码主要看三点
那么就看第二点,该方法的文档字符串为
Delete items identified by all tag or ids contained in ARGS.
意思是:删掉所有args参数里面指定的tag和id所标识的项目
结合这个说明和搜到的资料以及一些尝试,
我梳理了下的使用方法,如下:
delete
方法的使用简单的来讲,delete
方法可以清除canvas画布上已绘制的对象
主要有以下三种使用方法
delete(id)
: 通过id来删除。canvas.create_something
的返回值delete(tag)
: 通过tag来删除。canvas.create_something(tag=tag)
来指定delete("all")
: 删除所有已绘制对象举个例子
import tkinter as tk
win = tk.Tk()
canvas = tk.Canvas(win)
canvas.pack()
r1 = canvas.create_rectangle(50, 50, 100, 150, fill="red", tag="one")
r2 = canvas.create_rectangle(150, 50, 200, 150, fill="green", tag=("two", "green"))
r3 = canvas.create_oval(250, 50, 300, 150, fill="green", tag=("three", "green"))
win.mainloop()
代码中r1,r2, r3分别为三个绘制对象的id
三个绘制对象的tag通过tag参数指定了。
需要额外注意的是:
多个绘制对象可以使用同一个tag,一个绘制对象也可以使用多个tag
第9行和第11行之间,调用delete方法来清理所有,代码示例如下
canvas.delete(r1)
canvas.delete(r2)
canvas.delete(r3)
canvas.delete("one")
canvas.delete("two")
canvas.delete("three")
canvas.delete("one")
canvas.delete("green") # 会同时删除掉r2和r3
canvas.delete("all") # 会同时所有canvas已绘制的对象,即r1, r2和r3
delete
方法其实可以一次删除多个项目
canvas.delete(r1)
canvas.delete(r2)
canvas.delete(r3)
可以简写成
canvas.delete(r1, r2, r3)
canvas.delete("one")
canvas.delete("two")
canvas.delete("three")
可以简写成
canvas.delete("one", "two", "three")
不仅如此,delete
里面的参数可以id和tag混搭着使用 ,比如
canvas.delete(r1, "two", "three")
等价于
canvas.delete(r1)
canvas.delete("two")
canvas.delete("three")
看完1之后,*args这样一个参数就好理解了
其代表函数能够接受不定数量个参数,可以接受0个,1个,多个。