forked from DeepNinja07x/Python_Scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPaint_box.py
79 lines (55 loc) · 2.33 KB
/
Paint_box.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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=1000, height=1000)
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)
def activate_button(self,some_button,eraser_mode=False):
self.activate_button.config(relief=RAISED)
some_button.config(relief=SUNKEN)
self.activate_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()