Python 语言 用 Tkinter 开发简易画图工具 画笔 / 形状 / 颜色选择 + 保存为 PNG

Python阿木 发布于 4 天前 5 次阅读


Python Tkinter 简易画图工具开发指南

Tkinter 是 Python 内置的一个图形用户界面库,它允许开发者创建简单的桌面应用程序。本文将围绕 Python 语言和 Tkinter 库,开发一个简易的画图工具,该工具将包含画笔、形状、颜色选择以及保存为 PNG 图像的功能。

环境准备

在开始编写代码之前,请确保你的 Python 环境已经安装了 Tkinter 库。大多数 Python 安装都自带 Tkinter,因此无需额外安装。

设计思路

我们的简易画图工具将包含以下功能:

1. 画笔工具:允许用户选择画笔的粗细和颜色。
2. 形状工具:允许用户选择绘制矩形、圆形等基本形状。
3. 颜色选择:允许用户选择画笔或形状的颜色。
4. 保存图像:允许用户将画布上的内容保存为 PNG 图像。

代码实现

以下是一个简易画图工具的实现代码:

python
import tkinter as tk
from tkinter import colorchooser, filedialog

画布类
class DrawingCanvas(tk.Canvas):
def __init__(self, master, width, height):
super().__init__(master, width=width, height=height, bg='white')
self.pack()
self.bind("", self.draw)
self.bind("", self.stop_draw)
self.current_color = 'black'
self.current_line_width = 1
self.shape = None
self.shape_color = 'black'

def draw(self, event):
if self.shape:
self.create_shape(event.x, event.y)
else:
self.create_line(event.x, event.y, self.winfo_width(), self.winfo_height(), fill=self.current_color, width=self.current_line_width)

def stop_draw(self, event):
self.shape = None

def create_shape(self, x, y):
if self.shape == 'rectangle':
self.create_rectangle(x, y, x+100, y+100, fill=self.shape_color)
elif self.shape == 'circle':
self.create_oval(x, y, x+100, y+100, fill=self.shape_color)

def set_color(self, color):
self.current_color = color

def set_shape_color(self, color):
self.shape_color = color

def set_line_width(self, width):
self.current_line_width = width

def set_shape(self, shape):
self.shape = shape

主窗口类
class DrawingApp(tk.Tk):
def __init__(self):
super().__init__()
self.title('简易画图工具')
self.geometry('800x600')

self.canvas = DrawingCanvas(self, 600, 500)
self.canvas.pack()

self.create_menu()

def create_menu(self):
menu = tk.Menu(self)
self.config(menu=menu)

file_menu = tk.Menu(menu, tearoff=0)
menu.add_cascade(label='文件', menu=file_menu)
file_menu.add_command(label='保存为 PNG', command=self.save_image)

tools_menu = tk.Menu(menu, tearoff=0)
menu.add_cascade(label='工具', menu=tools_menu)
tools_menu.add_command(label='画笔', command=self.select_pen)
tools_menu.add_command(label='矩形', command=self.select_rectangle)
tools_menu.add_command(label='圆形', command=self.select_circle)

color_menu = tk.Menu(menu, tearoff=0)
menu.add_cascade(label='颜色', menu=color_menu)
color_menu.add_command(label='画笔颜色', command=self.select_pen_color)
color_menu.add_command(label='形状颜色', command=self.select_shape_color)

def select_pen(self):
self.canvas.set_shape(None)

def select_rectangle(self):
self.canvas.set_shape('rectangle')

def select_circle(self):
self.canvas.set_shape('circle')

def select_pen_color(self):
color = colorchooser.askcolor(title="选择画笔颜色")[1]
if color:
self.canvas.set_color(color)

def select_shape_color(self):
color = colorchooser.askcolor(title="选择形状颜色")[1]
if color:
self.canvas.set_shape_color(color)

def save_image(self):
file_path = filedialog.asksaveasfilename(defaultextension='.png', filetypes=[('PNG files', '.png')])
if file_path:
self.canvas.postscript(file=file_path, colormode='color')

运行程序
if __name__ == '__main__':
app = DrawingApp()
app.mainloop()

代码解析

1. 画布类 (DrawingCanvas): 该类继承自 `tk.Canvas`,用于绘制图形。它包含了画笔、形状、颜色选择和保存图像的功能。
2. 主窗口类 (DrawingApp): 该类继承自 `tk.Tk`,用于创建主窗口和菜单。它包含了创建菜单、选择工具、选择颜色和保存图像的功能。
3. 菜单: 我们使用 `tk.Menu` 创建了一个菜单,它包含了文件、工具和颜色选项。
4. 颜色选择: 使用 `colorchooser.askcolor` 函数允许用户选择颜色。
5. 保存图像: 使用 `filedialog.asksaveasfilename` 函数允许用户选择保存路径和文件名,然后使用 `canvas.postscript` 方法将画布内容保存为 PNG 图像。

总结

本文介绍了如何使用 Python 和 Tkinter 开发一个简易的画图工具。通过实现画笔、形状、颜色选择和保存图像等功能,我们创建了一个基本的图形绘制应用程序。这个工具可以作为进一步开发更复杂图形应用程序的基础。