Python代码实现鼠标轨迹绘制,通过tkinter的Canvas画布控件,简单的交互绘制轨迹。
效果图如下:

借助AI实现简单的canvas绘图交互
代码如下所示:
import tkinter as tk
class DrawingApp:
def __init__(self, root):
self.root = root
self.root.title("Canvas绘图")
# 创建Canvas画布
self.canvas = tk.Canvas(root, width=800, height=600,
bg='white', cursor='pencil')
self.canvas.pack(fill=tk.BOTH, expand=True)
# 绑定鼠标事件
self.canvas.bind("<ButtonPress-1>", self.start_drawing)
self.canvas.bind("<B1-Motion>", self.draw_line)
self.canvas.bind("<ButtonRelease-1>", self.stop_drawing)
# 添加清除按钮
self.clear_btn = tk.Button(root, text="清除画布", command=self.clear_canvas)
self.clear_btn.pack()
# 初始化绘制变量
self.last_x = None
self.last_y = None
self.drawing = False
def start_drawing(self, event):
"""开始绘制(按下鼠标)"""
self.drawing = True
self.last_x = event.x
self.last_y = event.y
def draw_line(self, event):
"""绘制轨迹(移动鼠标)"""
if self.drawing:
current_x = event.x
current_y = event.y
# 创建连续的线条
self.canvas.create_line(
self.last_x, self.last_y,
current_x, current_y,
width=2, fill='black', capstyle=tk.ROUND, smooth=tk.TRUE
)
# 更新上一个点的位置
self.last_x = current_x
self.last_y = current_y
def stop_drawing(self, event):
"""停止绘制(释放鼠标)"""
self.drawing = False
def clear_canvas(self):
"""清除整个画布"""
self.canvas.delete("all")
if __name__ == "__main__":
root = tk.Tk()
app = DrawingApp(root)
root.mainloop()

1万+

被折叠的 条评论
为什么被折叠?



