如何用Python创建支持Canvas绘图、选色及画布清空的GUI程序
基于Python Tkinter的Canvas绘图程序(支持选色与清空)
下面是一个使用Tkinter实现的轻量级绘图程序,满足Canvas绘图、颜色选择和清空画布的需求:
完整代码
import tkinter as tk from tkinter import colorchooser class DrawingApp: def __init__(self, root): self.root = root self.root.title("Canvas绘图工具") # 初始化绘图参数 self.current_color = "black" self.last_x = None self.last_y = None # 创建Canvas组件 self.canvas = tk.Canvas(root, width=800, height=600, bg="white") self.canvas.pack(pady=10) # 绑定鼠标事件 self.canvas.bind("<Button-1>", self.start_draw) self.canvas.bind("<B1-Motion>", self.draw) # 创建功能按钮框架 button_frame = tk.Frame(root) button_frame.pack(pady=5) # 颜色选择按钮 color_btn = tk.Button(button_frame, text="选择颜色", command=self.choose_color) color_btn.grid(row=0, column=0, padx=5) # 清空画布按钮 clear_btn = tk.Button(button_frame, text="清空画布", command=self.clear_canvas) clear_btn.grid(row=0, column=1, padx=5) def start_draw(self, event): # 记录鼠标按下的起点坐标 self.last_x = event.x self.last_y = event.y def draw(self, event): # 绘制连续线条 if self.last_x and self.last_y: self.canvas.create_line( self.last_x, self.last_y, event.x, event.y, fill=self.current_color, width=2, capstyle=tk.ROUND, smooth=tk.TRUE ) # 更新最后坐标 self.last_x = event.x self.last_y = event.y def choose_color(self): # 调用系统颜色选择器 color = colorchooser.askcolor(title="选择绘图颜色")[1] if color: self.current_color = color def clear_canvas(self): # 清空Canvas所有内容 self.canvas.delete("all") if __name__ == "__main__": root = tk.Tk() app = DrawingApp(root) root.mainloop()
功能说明
- 绘图功能:按住鼠标左键在Canvas上拖动即可绘制线条,线条末端采用圆角处理,绘制过程平滑
- 颜色选择:点击「选择颜色」按钮,打开系统自带的颜色选择器,选中颜色后即可用该颜色绘图
- 清空画布:点击「清空画布」按钮,Canvas上的所有绘图内容会被一次性清除
实现细节
- 使用Tkinter的
Canvas组件作为绘图区域,通过绑定<Button-1>(鼠标左键按下)和<B1-Motion>(鼠标左键拖动)事件实现连续绘图 - 借助
colorchooser模块调用系统原生颜色选择器,简化颜色选择逻辑 - 通过
canvas.delete("all")实现清空画布的功能,该方法会删除Canvas中所有可见元素
内容的提问来源于stack exchange,提问作者Nisrin Dhoondia
相关产品推荐
相关产品推荐

