使用python编写一个画图的软件,背景为黑色, 画笔为白色,在画布上可以进行画图,点击保存按钮后,整体保存为jpg文件
import tkinter as tk
from PIL import ImageGrab
class DrawingApp:
def __init__(self):
self.root = tk.Tk()
self.root.title("简单画图软件")
self.canvas = tk.Canvas(self.root, bg='black', width=800, height=600)
self.canvas.pack()
self.pen_color = 'white'
self.last_x, self.last_y = None, None
self.canvas.bind("<B1-Motion>", self.paint)
self.canvas.bind("<ButtonRelease-1>", self.reset)
save_button = tk.Button(self.root, text="保存", command=self.save_image)
save_button.pack()
reset_button = tk.Button(self.root, text="重置", command=self.reset_canvas)
reset_button.pack()
def paint(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.pen_color, width=2)
self.last_x, self.last_y = event.x, event.y
def reset(self, event):
self.last_x, self.last_y = None, None
def save_image(self):
# 获取窗口在屏幕上的位置
x = self.root.winfo_rootx()
y = self.root.winfo_rooty()
# 获取画布在窗口中的位置和大小
w = self.canvas.winfo_width()
h = self.canvas.winfo_height()
# 使用 ImageGrab 截取画布区域并保存为图片
img = ImageGrab.grab((x + self.canvas.winfo_x(), y + self.canvas.winfo_y(), x + self.canvas.winfo_x() + w, y + self.canvas.winfo_y() + h))
img.save("drawing.jpg")
def reset_canvas(self):
self.canvas.delete("all")
def run(self):
self.root.mainloop()
if __name__ == "__main__":
app = DrawingApp()
app.run()