drawing program source code

in drawing •  4 years ago 

from tkinter import *
from tkinter.colorchooser import askcolor

class Paint(object):

DEFAULT_PEN_SIZE = 5.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.brush_button = Button(self.root, text='brush', command=self.use_brush)
    self.brush_button.grid(row=0, column=1)

    self.color_button = Button(self.root, text='color', command=self.choose_color)
    self.color_button.grid(row=0, column=2)

    self.eraser_button = Button(self.root, text='eraser', command=self.use_eraser)
    self.eraser_button.grid(row=0, column=3)

    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('<B1-Motion>', self.paint)
    self.c.bind('<ButtonRelease-1>', self.reset)

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

def use_brush(self):
    self.activate_button(self.brush_button)

def choose_color(self):
    self.eraser_on = False
    self.color = askcolor(color=self.color)[1]

def use_eraser(self):
    self.activate_button(self.eraser_button, eraser_mode=True)

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()

this source code is from "https://stackoverflow.com/questions/60796848/how-to-draw-on-any-window-from-a-widget-in-python"

kk1.png

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!