Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- from PIL import Image, ImageDraw
- from tkinter import colorchooser
- from tkinter.colorchooser import askcolor
- line_id = None
- line_points = []
- #line_options = {}
- def use_line():
- line_button.config(relief="sunken") # Кнопка зажата
- # erase_button.config(relief="raised")
- hand_button.config(relief="raised")
- root.config(cursor='plus')
- canvas.bind('<B1-Motion>', create_line)
- canvas.bind('<ButtonPress-1>', on_start)
- canvas.bind('<ButtonRelease-1>', reset)
- def on_start(event):
- global drawn, x1, y1
- drawn = None
- x1 = event.x
- y1 = event.y
- def reset(event):
- global x, y
- x = 0
- y = 0
- def create_line(event):
- global drawn
- if drawn:
- canvas.delete(drawn)
- objectid = canvas.create_line(x1, y1, event.x, event.y, fill=color, width=brush_size)
- drawn = objectid
- def bg_color():
- c = askcolor()
- bg_col = c[1]
- canvas.configure(bg=bg_col)
- def hand_line():
- root.config(cursor='arrow')
- hand_button.config(relief="sunken")
- # erase_button.config(relief="raised")
- line_button.config(relief="raised")
- canvas.bind('<B1-Motion>', draw_line)
- canvas.bind('<ButtonRelease-1>', end_line)
- canvas.bind('<Button-1>', set_start)
- def choose_color():
- global color
- (rgb, hx) = colorchooser.askcolor()
- color = hx
- color_lab['bg'] = hx
- def draw_line(event):
- global line_id
- line_points.extend((event.x, event.y))
- if line_id is not None:
- canvas.delete(line_id)
- line_id = canvas.create_line(line_points, width=brush_size, fill=color, capstyle=ROUND)
- #def erase(): # Ластик берёт цвет фона
- # erase_button.config(relief="sunken")
- # hand_button.config(relief="raised")
- # line_button.config(relief="raised")
- # global color
- # prev_col = color
- # color = canvas['bg']
- # hand_line()
- # root.config(cursor='arrow')
- def set_start(event):
- line_points.extend((event.x, event.y))
- def end_line(event=None):
- global line_id
- line_points.clear()
- line_id = None
- def select(value):
- global brush_size
- brush_size = int(value)
- def clear_canvas():
- canvas.delete('all')
- canvas['bg'] = 'white'
- draw_img.rectangle((0, 0, 1280, 720), width=0, fill='white')
- x = 0
- y = 0
- root = Tk()
- root.title("Рисовалка")
- root.geometry('1280x720')
- brush_size = 10
- color = 'black'
- root.columnconfigure(5, weight=1)
- root.rowconfigure(2, weight=1)
- canvas = Canvas(root, bg='white')
- canvas.grid(row=2, column=0, columnspan=7, padx=5, pady=5, sticky="news")
- image1 = Image.new('RGB', (1280, 640), 'white')
- draw_img = ImageDraw.Draw(image1)
- Button(root, text='Выбрать цвет', width=11, command=choose_color).grid(row=0, column=0, padx=5)
- color_lab = Label(root, bg=color, width=5)
- color_lab.grid(row=0, column=1)
- v = IntVar(value=10)
- Scale(root, variable=v, from_=1, to=100, orient=HORIZONTAL, command=select).grid(row=0, column=2, padx=50)
- #erase_button = Button(root, text='Ластик', width=10, command=erase)
- #erase_button.grid(row=1, column=7)
- hand_button = Button(root, text='Кисть', width=10, command=hand_line)
- hand_button.grid(row=0, column=3, padx=5)
- line_button = Button(root, text='Линия', width=10, command=use_line)
- line_button.grid(row=0, column=4)
- clear_button = Button(root, text='Очистить', width=10, command=clear_canvas)
- clear_button.grid(row=0, column=5, sticky="e")
- bg_button = Button(root, text='Залить фон', width=10, command=bg_color)
- bg_button.grid(row=0, column=6, padx=5)
- hand_line()
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment