티스토리 뷰
마우스와 키보드 이벤트 처리
- 터틀 그래픽에서 마우스와 키보드 이벤트를 이용하여 간략한 도형이나 그림을 그릴 수 있습니다.
- 마우스 클릭이나 드래그 이벤트 발생 좌표를 구해 활용합니다.
- 그림을 그리는 기능은 키보드 이벤트를 이용합니다.
- 펜을 올린 상태에서는 도형이 그려지지 않고 좌표만 변경됩니다.
<소스 코드>
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 |
import turtle as t
draw_action = 1 #그리기 상태(1:선, 2:삼각형, 3:사각형, 4:원형)
oldx = 0 #이전 x좌표
oldy = 0 #이전 y좌
def new_clear(): # 클리어 함수
global draw_action
global oldx
global oldy
t.clear()
t.pensize(1)
t.pendown()
draw_action = 1
oldx = 0
oldy = 0
def draw(x,y): #모양 그리는 함수
global oldx
global oldy
if draw_action == 1: #선 그리기
t.goto(x,y)
oldx = x
oldy = y
elif draw_action == 2: #삼각형 그리기
t.goto(x, oldy)
t.goto((x+oldx)//2, y)
t.goto(oldx, oldy)
elif draw_action == 3: # 사각형 그리기
t.goto(x, oldy)
t.goto(x,y)
t.goto(oldx,oldy)
elif draw_action == 4: #원형 그리기
t.circle(-((x-oldx)//2))#z클릭한 방향으로 원을 그림
def drag(x,y) :
if draw_action== 1 :
draw(x,y)
def move(x, y): #마우스 오른쪽 버튼클릭 시 이동하는 함
global oldx
global oldy
penstatus = t.isdown() # 현재 펜 업/다 상태 저장
t.penup()
t.goto(x,y)
if penstatus == True:
t.pendown()
oldx = x
oldy = y
#콜백 함
def key_l():
global draw_action
draw_action = 1
def key_t():
global draw_action
draw_action = 2
def key_r():
global draw_action
draw_action = 3
def key_c():
global draw_action
draw_action=4
def key_n():
new_clear()
def key_u():
t.penup()
def key_d():
t.pendown()
def key_1():
t.pensize(1)
def key_3():
t.pensize(3)
def key_5():
t.pensize(5)
#스크린 설정
t.setup(600,600)
s = t.Screen()
t.shapesize(2)
t.speed(0)
t.left(90)
new_clear()
#이벤트 처리
t.ondrag(drag)
s.onkey(key_l,"l")
s.onkey(key_t,"t")
s.onkey(key_r,"r")
s.onkey(key_c,"c")
s.onkey(key_n,"n")
s.onkey(key_u,"u")
s.onkey(key_d,"d")
s.onkey(key_1,"1")
s.onkey(key_3,"3")
s.onkey(key_5,"5")
s.onscreenclick(draw,1)
s.onscreenclick(move,3)
s.listen() |
cs |
'플러스 과정 ' 카테고리의 다른 글
[파이썬]부산진고 13주차 (주파수를 이용한 피아노 건반 연주하기) (0) | 2018.06.23 |
---|---|
[파이썬]부산진고 11주차(문자열,ISBN 코드를 통한 도서 번호 검증하기) (0) | 2018.06.02 |
[파이썬]부산진고 10주차(리스트 관련 함수, 로봇청소기) (0) | 2018.05.26 |
[파이썬]부산진고 9주차(화재경보기, 세그먼트 LED) (2) | 2018.05.19 |
[파이썬]부산진고 8주차(딕셔너리, DNA 염기서열 순서 바꾸기) (1) | 2018.05.12 |