Python Tkinter 鼠标事件
Python Tkinter 鼠标事件
鼠标事件的用法,实现对图形的缩放。点击鼠标左键能放大,点击鼠标右键能缩小。
from tkinter import * # Import tkinter class EnlargeShrinkCircle: def __init__(self): self.radius = 50 # 半径50 window = Tk() # 创建窗体 Create a window window.title("Control Circle Demo") # 窗体标题 Set a title self.canvas = Canvas(window, bg = "white", width = 200, height = 200) # Canvas为画布;背景白色;宽度200像素;高度200像素 self.canvas.pack() # 画布放置并显示 self.canvas.create_oval( 100 - self.radius, 100 - self.radius, 100 + self.radius, 100 + self.radius, tags = "oval")# 创建椭圆(包括圆) # 左上角为 100-50,100-50, 右下角为 100+50,100+50, # Bind canvas with mouse events self.canvas.bind("<Button-1>", self.increaseCircle) # Tkinter Canvas 消息绑定, <Button-1> 鼠标左键单击 https://www.cnblogs.com/emanlee/p/16180742.html self.canvas.bind("<Button-3>", self.decreaseCircle) # <Button-3> 鼠标右键单击 window.mainloop() # Create an event loop def increaseCircle(self, event): self.canvas.delete("oval") # Canvas delete方法可以清除canvas画布上已绘制的对象 if self.radius < 100: self.radius += 2 # 改变半径 self.canvas.create_oval( 100 - self.radius, 100 - self.radius, 100 + self.radius, 100 + self.radius, tags = "oval") # 绘制圆 def decreaseCircle(self, event): self.canvas.delete("oval") # Canvas delete方法可以清除canvas画布上已绘制的对象 if self.radius > 2: self.radius -= 2 # 改变半径 self.canvas.create_oval( 100 - self.radius, 100 - self.radius, 100 + self.radius, 100 + self.radius, tags = "oval") # 绘制圆 EnlargeShrinkCircle() # Create GUI
Canvas create_oval 方法绘制椭圆,语法格式:
create_oval(x0, y0, x1, y1, option, ...)
椭圆,包括特殊情况下的圆。所占用的矩形区域由左上角的坐标(x0,y0)和右下角外的点的坐标(x1,y1)定义。
在 Canvas 中调用 create_xxx() 方法绘图时,还可传入一个 tags 选项,该选项可以为所绘制的图形项(比如矩形、椭圆、多边形等)添加一个或多个 tag(标签)。此外,Canvas 还允许调用方法为图形项添加 tag、删除 tag 等,这些 tag 也相当于该图形项的标识,程序完全可以根据 tag 来获取图形项。
REF:https://blog.csdn.net/AudiA6LV6/article/details/126851233
Canvas delete方法可以清除canvas画布上已绘制的对象
主要有以下三种使用方法
delete(id): 通过id来删除。
id是canvas.create_something的返回值
delete(tag): 通过tag来删除。
tag通过canvas.create_something(tag=tag)来指定
delete("all"): 删除所有已绘制对象
REF:https://blog.csdn.net/python1639er/article/details/115386039
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2022-04-10 Windows Jupyter Notebook 文件默认目录的查看以及更改步骤(启动目录,启动文件夹)
2022-04-10 Python生成器的推导式
2022-04-10 Python3 序列解包
2020-04-10 用R一页绘制多图 多页绘图
2016-04-10 geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic?
2016-04-10 R 给data.frame(dataframe)添加一列
2016-04-10 ggplot2 legend图例的修改