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