-
Notifications
You must be signed in to change notification settings - Fork 79
/
paint.py
76 lines (58 loc) · 2.48 KB
/
paint.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
from guizero import App, Text, Box, Drawing, Slider, PushButton, Combo
def start_paint(event):
painting.last_event = event
def stop_paint():
painting.last_event = None
painting.last_shape = None
def draw_paint(event):
if tool.value == "line":
painting.line(
painting.last_event.x, painting.last_event.y,
event.x, event.y,
color=(red.value, green.value, blue.value),
width=line_width.value)
painting.last_event = event
else:
if painting.last_shape is not None:
painting.delete(painting.last_shape)
if tool.value == "rectangle":
painting.last_shape = painting.rectangle(
painting.last_event.x, painting.last_event.y,
event.x, event.y,
color=(red.value, green.value, blue.value)
)
elif tool.value == "oval":
painting.last_shape = painting.oval(
painting.last_event.x, painting.last_event.y,
event.x, event.y,
color=(red.value, green.value, blue.value)
)
def update_color():
color_label.bg = (red.value, green.value, blue.value)
color_label.text_color = (255 - red.value, 255 - green.value, 255 - blue.value)
def select_tool():
line_width_box.visible = tool.value == "line"
a = App(title="Paintzero")
tool_box = Box(a, height="fill", border=True, align="left")
paint_box = Box(a, width="fill", height="fill", border=True, align="right")
tool = Combo(tool_box, options=["line", "rectangle", "oval"], selected="line", align="top", width="fill", command=select_tool)
color_label = Text(tool_box, text="color", align="top", width="fill")
color_label.bg = "black"
color_label.text_color = "white"
red = Slider(tool_box, end=255, command=update_color)
red.bg = (255, 0, 0)
green = Slider(tool_box, end=255, command=update_color)
green.bg = (0, 255, 0)
blue = Slider(tool_box, end=255, command=update_color)
blue.bg = (0, 0, 255)
line_width_box = Box(tool_box, align="top")
Text(line_width_box, text="width", align="top")
line_width = Slider(line_width_box, start=1, end=10, align="top")
painting = Drawing(paint_box, width="fill", height="fill")
painting.last_event = None
painting.last_shape = None
painting.when_left_button_pressed = start_paint
painting.when_mouse_dragged = draw_paint
painting.when_left_button_released = stop_paint
PushButton(tool_box, text="Clear", command=painting.clear, align="bottom", width="fill")
a.display()