tkinter Canvas delete 方法详解

python怎么清空画布_如何清除或覆盖tkinter画布? 下面的代码显示了我正在处理的tkinter图形用户界面的一页。我想让“清除绘图字段”按钮做的是:清除画布,因为如果我再次绘图,新的绘图将打包在下面。或者:我如何覆盖现有的绘图,这样就可以去掉按钮本身?class PlotPage(tk.Frame):"""Page containing the matplotlib graphs"""def __init__(self, parent, contr... 阅读详情
AI摘要

本文详细解读Canvas的delete方法,包括其参数理解、文档字符串说明,以及如何通过id、tag和'all'清除画布上的对象,提供实例演示和*args参数的解析。

作者自我介绍:大爽歌, b站小UP主 ,直播编程+红警三 ,python1对1辅导老师 。

0 前言

对于用Canvas来实现简单游戏的程序来说,
delete方法,是一个很重要的方法。

但是官方文档上好像并没有详细解释该方法,网上搜到的关于这个方法的教程比较零乱。
所以我选择直接去看该方法源码。

def delete(self, *args):
    """Delete items identified by all tag or ids contained in ARGS."""
    self.tk.call((self._w, 'delete') + args)

看源码主要看三点

  • 参数
  • 文档字符串(DocStrings)
  • 方法里面的具体代码
  1. 这个方法的参数是*args,对新手来说不是很容易看懂(所以到本文第二部分再讲)。
    就算看懂了也不明白具体参数的格式和效果。
  2. 这个方法里面的代码应该是调用了更底层的代码,很不容易看懂(反正我没看懂)

那么就看第二点,该方法的文档字符串为

Delete items identified by all tag or ids contained in ARGS.

意思是:删掉所有args参数里面指定的tag和id所标识的项目

结合这个说明和搜到的资料以及一些尝试,
我梳理了下的使用方法,如下:

1 delete方法的使用

基础使用

简单的来讲,delete方法可以清除canvas画布上已绘制的对象
主要有以下三种使用方法

  • delete(id): 通过id来删除。
    id是canvas.create_something的返回值
  • delete(tag): 通过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方法来清理所有,代码示例如下

  • 通过id来删除
canvas.delete(r1)
canvas.delete(r2)
canvas.delete(r3)
  • 通过tag来删除
canvas.delete("one")
canvas.delete("two")
canvas.delete("three")
canvas.delete("one")
canvas.delete("green")  # 会同时删除掉r2和r3
  • 使用"all"删除所有
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")

2 回头再看*args

看完1之后,*args这样一个参数就好理解了
其代表函数能够接受不定数量个参数,可以接受0个,1个,多个。

python中tkinter使用Entry组件添加输入文本框、Entry组件delete方法删除文本框中内容 阅读详情

相关推荐

清空HTML5 Canvas中的绘图内容

然后,调用clearRect方法并传入四个参数:清除区域的左上角x坐标(0)、左上角y坐标(0)、清除区域的宽度(canvas.width)、清除区域的高度(canvas.height)。上述示例代码中,创建了一个具有id为"myCanvas"的Canvas元素,并在页面上放置了一个"清空Canvas"的按钮。clearRect方法是Canvas的上下文对象(context)提供的一个方法,它可以清除指定矩形区域内的内容。当你修改Canvas的宽度时,浏览器会自动清除Canvas中的内容。

DevProZ的博客 3582

canvas绘制文本和清除绘制

除了这里的清除绘制外,window对象还为我们提供了一个方法清除绘制。fillText()有五个参数,第一个参数为绘制内容(字符串),第二个参数为起点x轴坐标,第三个参数为起点y轴坐标后两个参数可选,为最大宽度和最大高度。属性值有top、hanging、middle、alphabetic、ideographic、bottom。属性值有start、left、center、right、end。第一个参数为矩形的左上角顶点的x轴坐标;第二个参数为矩形的左上角顶点的y轴坐标;第四个参数为矩形的高度。......

m0_59345890的博客 3873

Python图形界面(GUI)Tkinter笔记(四十九):如何用 Tkinter 实现图表的展示(2)———用强大的【Canvas】控件实现静态图片展示

Canvas组件是功能强大的绘图工具,支持图形、文本、位图绘制及组件嵌入。通过tk.Canvas(root, options)创建,可设置尺寸、背景色、边框等属性。核心绘图方法包括create_line、create_rectangle、create_oval、create_text、create_image和create_window,每次操作返回对象ID以便后续管理。支持对象移动、删除、事件绑定及坐标转换,配合scrollregion和滚动条可浏览大内容。使用时需注意保持图片引用防止被回收。

肥辉的学习笔记 164

清除Canvas 画过的内容

清除Canvas 上一次的内容 <!--插入一个canvas画布 --> <canvas id="myCanvas" width="300" height="300" ></canvas> <botton onclick="cls">清空</botton> function cls(){ //获取canvas的ID var c=document.getElementById("myCanvas"); var ctx=c.getConte

weixin_45844542的博客 3595

Canvas撤回操作及前进功能(Javascript)

/** * canvas操作历史回退及前进功能 * * 调用示例,执行某个操作之后,调用保存历史,这里的参数都是自定义的需要保存的历史数据 * self.selectCanvas.getContext("2d").saveHistory(points, copy_segments, copy_rounds, copy_controlLine, * copy_selectedSegments, copy_selectedPoints); * 回撤及前进功能代码示例 * $(window).keydown(function (event) { if (event.ctrlKey == true && event.keyCode == 90) {//Ctrl+ Z let history_data = self.selectCanvas.getContext("2d").undo(); // 获取回退一步的历史数据 if (history_data != null) { ... } } if (event.ctrlKey == true && event.keyCode == 89) {//Ctrl+ Y let history_data = self.selectCanvas.getContext("2d").redo(); //获取前进一步的历史数据 if (history_data != null) { ... } } } **/

避坑指南:英飞凌TC3XX的MCMCAN初始化常见错误及解决方法

本文针对英飞凌TC3XX系列MCU的MCMCAN模块初始化难题,深入剖析了寄存器配置时序、总线监控模式误用、中断映射错误及Message RAM地址冲突四大常见陷阱。通过实战代码示例和诊断流程,提供了清晰的避坑指南和解决方案,帮助嵌入式开发者高效解决CAN FD通信故障,确保汽车电子与工业控制项目的稳定运行。

weixin_29193259的博客 246

python怎么清空画布_Python3 tkinter基础 Canvas delete 删除画布中的所有图形

Python : 3.7.0OS : Ubuntu 18.04.1 LTSIDE : PyCharm 2018.2.4Conda : 4.5.11typesetting : Markdowncode"""@Author : 行初心@Date : 18-9-30@Blog : www.cnblogs.com/xingchuxin@Gitee : gitee.com/zhichengjiu"...

weixin_39968946的博客 3070

eLabRadio软件无线电虚实结合仿真开发平台简介

在使用仿真平台时,不要关闭设备或断开设备与PC机之间的网络连接,否则,仿真平台将无法正常工作。注:采用eNodeX设备认证方式,当出现“设备不存在”的报错时,请检查计算机IP是否和硬件设备IP处于同一网段,或者是否是先连接好网线,再开启硬件设备的。①此登录方式下,需要先建立软件与硬件的通信:在登录窗口点击【网络配置】,参照下图输入设备IP,服务器地址无需设置,设置完成后点击确认,此时登录界面无需设置账号密码;,拷贝到电脑上,使用管理员权限运行setup.exe,下一步直到安装完成,桌面会生成快捷方式。

weixin_55349105的博客 6319

python清空画布_Python3 tkinter基础 Canvas delete 删除画布中的所有图形

Python : 3.7.0OS : Ubuntu 18.04.1 LTSIDE : PyCharm 2018.2.4Conda : 4.5.11typesetting : Markdowncode"""@Author : 行初心@Date : 18-9-30@Blog : www.cnblogs.com/xingchuxin@Gitee : gitee.com/zhichengjiu...

weixin_39809584的博客 1226

从零构建eSIM RSP服务:云原生架构与GSMA合规实践

本文详细阐述了从零开始构建一个符合GSMA SAS-SM安全标准的云原生eSIM RSP服务的完整路径。内容涵盖云原生基础设施选型、容器化部署、GSMA标准接口集成,并重点分享了通过SAS-SM安全审计的实战经验与避坑指南,为物联网及智能设备企业自建可控的远程SIM配置服务提供了系统性的解决方案。

weixin_29322553的博客 459

1.安装EMQX服务器

阿里云;EMQX

hfh8130的博客 5311

python调用窗口_python-如何获取调用事件的窗口小部件的ID(...

执行摘要由于canvas方法可以接受标签或项目ID,因此可以使用紧凑型回调def autodestroy(event):event.widget.delete("current")细节您的回调收到一个Tkinter事件作为唯一参数.此参数是一个对象,您可以从中检索受刺激的小部件以及其他信息(在发生鼠标事件的情况下,鼠标坐标或按钮).def clicked(event):canvas = event...

weixin_39783156的博客 682

边缘AI工业落地:YOLO26-Seg + RK3588 NPU 极致部署(低功耗+实时实例分割,工业场景全覆盖)

本次实战汇总了「YOLO26-Seg+RK3588 NPU」工业边缘部署中最常见、最致命的8个坑点,所有坑点均来自真实工业项目,解决方案均为零代码/一键操作,无需复杂配置,能让你少走90%的弯路,节省大量时间,必看必记!❌ RKNN转换报错「算子不支持/模型加载失败」→ ✅ 导出ONNX时必须指定opset=12,重新导出即可,RK3588唯一兼容版本;❌ 分割mask错位/轮廓模糊 → ✅ 导出ONNX时加,并保证RKNN的归一化参数与YOLO26一致,零代码修复;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1717

tkinter canvas绑定tag后取消tag

可以使用delete方法在Tkinter canvas上删除指定的tag: canvas.delete("tag_name") 例如: canvas.delete("rectangle") 这将删除所有带有"rectangle"标签的图形。

weixin_35755823的博客 177

手把手教你学基带SOC芯片(4.4.9)--基带芯片的电源管理实例:高通 Snapdragon 系列实例(十)

Snapdragon 888 通过支持多种深度睡眠模式,如 AOAC 模式、低功耗模式和深度睡眠模式,以及智能电源管理技术,实现了对功耗的精细管理。这些模式不仅延长了设备的电池寿命,还确保了用户在各种使用场景下的良好体验。无论是保持网络连接、限制后台活动,还是完全关闭不必要的功能,Snapdragon 888 都能够灵活应对,提供高效的功耗管理方案。

MHD0815的博客 740

基于YOLOv5的空间目标智能监测系统:航天器与太空碎片识别技术实现

做完这个项目,你会发现自己完整走过了“数据采集→标注→模型训练→功能集成→界面开发”的毕设全流程,这不仅是技术能力的证明,更是对“技术守护宇宙安全”这一理念的实践。答辩时,你可以重点讲这几点:系统解决了航天监测的哪些痛点、YOLOv5在太空目标检测中的性能优势、系统未来能怎么优化(比如对接航天监测网络、实现实时轨道预测)。未来,这个系统还能往“更智能”的方向发展:比如结合轨道计算预测碰撞风险、开发移动端APP让天文爱好者参与太空垃圾上报、在航天任务中实现全自动避障决策……想象空间很大。

m0_64661770的博客 111

python canvas教程_python–Tkinter教程之Canvas篇(3) | 学步园

'''Tkinter教程之Canvas篇(3)''''''16.移动item'''#-*-coding:cp936-*-#move指定x,y在偏移量from Tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色cv = Canvas(root,bg = 'white')# 创建两个同样的rectangle,比较移动前后的不同rt1 = cv....

weixin_29113371的博客 403

【数据分析】比较SparCC、Pearson和Spearman相关性估计方法在合成组学数据上的表现

【数据分析】比较SparCC、Pearson和Spearman相关性估计方法在合成组学数据上的表现

专注生信领域 659

GUI的最终选择 Tkinter(六):Canvas组件

Canvas组件,是一个可以让你任性的组件,一个可以让你随心所欲地绘制界面的组件。Canvas是一个通用的组件,它通常用于显示和编辑图形,可以用它来绘制直线,圆形,多边形,甚至是绘制其他组件。 在Canvas组件上绘制对象,可以用creat_xxx()方法(xxxvia表示对象类型,例如直线line,矩形rectangle和文本text等)。 1 from tkinter import ...

weixin_30700977的博客 274

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

python tkinter insert函数_(9条消息) Python tkinter

*18.2.23 dchars(args)*args传递的参数有3个:(1)tagOrId:对象ID或者标签tag(2)from:开始的字符位置(3)to:可选项,结束的字符位置。dchars的作用就是从tagOrId指定对象中,删除字符。删除从from指定的位置开始,到to指定的位置结束。如果to没有指定,则只删除一个字符。import tkinter as tkroot=tk.Tk()root...

weixin_32533659的博客 5297

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

canvas画布清空python_python清空画布_关于python:如何清除Tkinter画布?

当我使用以下方法绘制形状时:canvas.create_rectangle(10, 10, 50, 50, color="green")Tkinter是否跟踪其创建的事实?在我制作的一个简单游戏中,我的代码有一个Frame创建一堆矩形,然后绘制一个大的黑色矩形以清除屏幕,然后绘制另一组更新的矩形,依此类推。我是否在内存中创建了数千个矩形对象?我知道您可以将上面的代码分配给一个变量,但是如果我不这样...

weixin_34765773的博客 3175

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

python 调用event handler_python-如何获取调用事件的窗口小部件的ID(...

执行摘要由于canvas方法可以接受标签或项目ID,因此可以使用紧凑型回调def autodestroy(event):event.widget.delete("current")细节您的回调收到一个Tkinter事件作为唯一参数.此参数是一个对象,您可以从中检索受刺激的小部件以及其他信息(在发生鼠标事件的情况下,鼠标坐标或按钮).def clicked(event):canvas = event...

weixin_39737757的博客 111

python-Tkinter教程之Canvas篇

https://blog.youkuaiyun.com/u011650048/article/details/13022019 python-Tkinter教程之Canvas篇(1) 2013年10月25日 16:15:26 做一个有魅力的程序员 阅读数:4897 标签: python canvas tkinter create_rectangle 更多 个人分类: python 版权声明:本文为博...

y1019992884的博客 1万+

Tkinter库的学习记录19-Canvas

本章将介绍tkinter模块内Canvas,这个模块可以绘图,也可以制作动画,而动画也是设计游戏的基础,本章将完整介绍这方面的知识。

weixin_71243777的博客 208

Python tkinter(GUI编程)模块最完整教程(下)

组件的设置也是一个字典,可以包括四个键"configure", "map", "layout"和"element create",所对应的值分别和Style这几个方法期望的格式相同。style是样式更改的类名,**kw是设置的参数选项。公用元素在任何组件都可以以组件名称来命名,如"Button.label", "Button.button", "Label.label",而专属的元素需要指定父组件,如"Menubutton.dropbutton"而不是"Button.dropbutton"。

pythonzzy的博客 1万+

Python:tkinter Canvas 删除/清理元素方法

列举了以下Canvas画布的清理一些方法,简单实用。 #-*- encoding=UTF-8 -*- __author__ = 'daniu' ''' 演示: 清理画布的方法 ''' import tkinter as tk def clearAll(): canvas.delete(tk.ALL) def clearXX(): canvas.delete(c3) ...

m0_37607730的博客 1万+
上一篇: python一对一辅导教程:Computational Problems for Physics chapter 1-B Code Listings 1.7 - 1.11
下一篇: python tkinter实现俄罗斯方块基础版 —— 五、后续优化
大爽歌
博客等级 码龄9年 422粉丝 92原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值