Advertisement
Chl_Snt

Рисовалка

Jul 12th, 2023
1,050
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.56 KB | None | 0 0
  1. from tkinter import *
  2. from tkinter.colorchooser import *
  3.  
  4. root = Tk()
  5. root.geometry("600x400")
  6. root.title("Рисовалка")
  7. root["bg"] = 'gray75'
  8.  
  9. canvas = Canvas(root, width=540, height=400, bg="white")
  10. canvas.grid(row=0, column=0, rowspan=7)
  11.  
  12. state = "square"
  13. brush = 10
  14. color = "red"
  15.  
  16.  
  17. def choose(input):
  18.     global state, brush
  19.     if input == "plus" and brush < 98:
  20.         brush += 2
  21.         size.configure(text=brush)
  22.         return
  23.     elif input == "minus" and brush > 0:
  24.         brush -= 2
  25.         size.configure(text=brush)
  26.         return
  27.     state = input
  28.  
  29.  
  30. def ask_color(event):
  31.     global color
  32.     color_code = askcolor(title="Выбери цвет")
  33.     color = color_code[1]
  34.     size.configure(fg=color)
  35.  
  36.  
  37. square_btn = Button(root, text="🟥", font=(None, 20), command=lambda: choose("square"))
  38. square_btn.grid(row=0, column=1)
  39. circle_btn = Button(root, text="🔴", font=(None, 20), command=lambda: choose("circle"))
  40. circle_btn.grid(row=1, column=1)
  41. line1_btn = Button(root, text=" ↘ ", font=(None, 20), command=lambda: choose("line1"))
  42. line1_btn.grid(row=2, column=1)
  43. line2_btn = Button(root, text=" ↙ ", font=(None, 20), command=lambda: choose("line2"))
  44. line2_btn.grid(row=3, column=1)
  45.  
  46. plus_btn = Button(root, text="➕", font=(None, 20), command=lambda: choose("plus"))
  47. plus_btn.grid(row=4, column=1)
  48. minus_btn = Button(root, text="➖", font=(None, 20), command=lambda: choose("minus"))
  49. minus_btn.grid(row=5, column=1)
  50.  
  51. size = Label(root, text=brush, fg=color, font=(None, 32))
  52. size.grid(row=6, column=1)
  53.  
  54.  
  55. def paint(event):
  56.     if event.widget.__class__ is not Canvas:
  57.         return
  58.     if state == "circle":
  59.         canvas.create_oval(event.x - brush, event.y - brush, event.x + brush, event.y + brush, fill=color, outline=color)
  60.     elif state == "square":
  61.         canvas.create_rectangle(event.x - brush, event.y - brush, event.x + brush, event.y + brush, fill=color, outline=color)
  62.     elif state == "line1":
  63.         canvas.create_line(event.x - brush, event.y - brush, event.x + brush, event.y + brush, fill=color)
  64.     elif state == "line2":
  65.         canvas.create_line(event.x + brush, event.y - brush, event.x - brush, event.y + brush, fill=color)
  66.  
  67.  
  68. def erase(event):
  69.     canvas.create_oval(event.x - brush * 2, event.y - brush * 2, event.x + brush * 2, event.y + brush * 2, fill="white", outline="white")
  70.  
  71.  
  72. canvas.bind_all("<B1-Motion>", paint)
  73. canvas.bind_all("<B3-Motion>", erase)
  74.  
  75. canvas.bind_all("<1>", paint)
  76. canvas.bind_all("<3>", erase)
  77. canvas.bind_all("<2>", ask_color)
  78.  
  79.  
  80. root.mainloop()
  81.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement