@MaksaTaksa

Как сохранить нарисованную картинку в графическом приложение в модуле tkinter (python)?

Здравствуйте, нашел на просторах интернета такой вот код, который открывает самопальный paint в отдельном окне, только с одной кистью и цветом. Проблема возникла, когда пришла необходимость сохранить нарисованное, либо интегрировать в другой код этот самый paint, и выделять рисунок для использования, потому как он будет использован в нейросети для ее тестирования, вот сам код...

from tkinter import *
from tkinter.colorchooser import askcolor

class Paint(object):

DEFAULT_PEN_SIZE = 10.0
DEFAULT_COLOR = 'black'

def __init__(self):
self.root = Tk()

self.pen_button = Button(self.root, text='pen', command=self.use_pen)
self.pen_button.grid(row=0, column=0)

self.choose_size_button = Scale(self.root, from_=1, to=10, orient=HORIZONTAL)
self.choose_size_button.grid(row=0, column=4)

self.c = Canvas(self.root, bg='white', width=600, height=600)
self.c.grid(row=1, columnspan=5)

self.setup()
self.root.mainloop()

def setup(self):
self.old_x = None
self.old_y = None
self.line_width = self.choose_size_button.get()
self.color = self.DEFAULT_COLOR
self.eraser_on = False
self.active_button = self.pen_button
self.c.bind('', self.paint)
self.c.bind('', self.reset)

def use_pen(self):
self.activate_button(self.pen_button)

def activate_button(self, some_button, eraser_mode=False):
self.active_button.config(relief=RAISED)
some_button.config(relief=SUNKEN)
self.active_button = some_button
self.eraser_on = eraser_mode

def paint(self, event):
self.line_width = self.choose_size_button.get()
paint_color = 'white' if self.eraser_on else self.color
if self.old_x and self.old_y:
self.c.create_line(self.old_x, self.old_y, event.x, event.y,
width=self.line_width, fill=paint_color,
capstyle=ROUND, smooth=TRUE, splinesteps=36)
self.old_x = event.x
self.old_y = event.y

def reset(self, event):
self.old_x, self.old_y = None, None

if __name__ == '__main__':
Paint()
  • Вопрос задан
  • 859 просмотров
Пригласить эксперта
Ответы на вопрос 1
NeiroNx
@NeiroNx
Программист
можно использовать PIL.ImageGrab
чтобы сделать скриншот виджета.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы