-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path1_7_canvas.py
53 lines (41 loc) · 1.33 KB
/
1_7_canvas.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
import tkinter as tk
import ttkbootstrap as ttk
# setup
window = ttk.Window(themename = 'solar')
window.geometry('600x400')
window.title('Canvas')
# canvas
canvas = tk.Canvas(window, bg = 'white')
canvas.pack()
# canvas.create_rectangle((50, 20, 100, 200), fill = 'red', width = 10, dash = (4,2,1,1), outline = 'green')
# canvas.create_oval((200, 0, 300, 100), fill = 'green')
# canvas.create_arc(
# (200, 0, 300, 100),
# fill = 'red',
# start = 45,
# extent = 140,
# style = tk.CHORD,
# outline = 'red',
# width = 1)
# canvas.create_line((0, 0, 100, 150), fill = 'blue')
# canvas.create_polygon((0,0, 100,200, 300,50, 150, -50), fill = 'gray')
# canvas.create_text((100,200), text = 'this is some text', fill = 'green', width = 10)
# canvas.create_window((150,100), window = ttk.Button(window, text= 'this is text in a canvas'))
# Exercise
# use event binding to create a basic paint app
def draw_on_canvas(event):
x = event.x
y = event.y
canvas.create_oval((x - brush_size / 2,y - brush_size / 2, x + brush_size / 2,y + brush_size / 2), fill = 'black')
def brush_size_adjust(event):
global brush_size
if event.delta > 0:
brush_size += 4
else:
brush_size -= 4
brush_size = max(0,min(brush_size, 50))
brush_size = 2
canvas.bind('<Motion>', draw_on_canvas)
canvas.bind('<MouseWheel>', brush_size_adjust)
# run
window.mainloop()