【发布时间】:2019-08-07 04:43:39
【问题描述】:
我正在开发一个小型绘画应用程序,当我保存图像时,即使我尝试清除画布,它也会保存之前绘制的图像。你可以看下图来看看问题。
https://i.imgur.com/3DRrq93.png
canvas.delete("all") 清除画布,但仍保留以前的图像。完整的代码写在下面
from tkinter import *
import PIL
from PIL import Image, ImageDraw
#from model import *
def save():
global image_number
filename = f'image_{image_number}.jpg' # image_number increments by 1 at every save
image1.save(filename)
image_number += 1
#play_with_image()
def activate_paint(e):
global lastx, lasty
cv.bind('<B1-Motion>', paint)
lastx, lasty = e.x, e.y
def paint(e):
global lastx, lasty
x, y = e.x, e.y
cv.create_line((lastx, lasty, x, y), width=3)
# --- PIL
draw.line((lastx, lasty, x, y), fill='black', width=3)
lastx, lasty = x, y
def clear():
cv.delete("all")
#for item in cv.find_all():
# cv.delete(item)
root = Tk()
lastx, lasty = None, None
image_number = 0
cv = Canvas(root, width=640, height=480, bg='white')
# --- PIL
image1 = PIL.Image.new('RGB', (640, 480), 'white')
draw = ImageDraw.Draw(image1)
cv.bind('<1>', activate_paint)
cv.pack(expand=YES, fill=BOTH)
btn_save = Button(text="save", command=save)
btn_save.pack()
btn_clear = Button(text="clear", command=clear)
btn_clear.pack()
root.mainloop()
如何在不覆盖其他画布的情况下保存新画布?
【问题讨论】:
标签: python-3.x tkinter