티스토리 뷰

마우스와 키보드 이벤트 처리

- 터틀 그래픽에서 마우스와 키보드 이벤트를 이용하여 간략한 도형이나 그림을 그릴 수 있습니다.

- 마우스 클릭이나 드래그 이벤트 발생 좌표를 구해 활용합니다.

- 그림을 그리는 기능은 키보드 이벤트를 이용합니다.

- 펜을 올린 상태에서는 도형이 그려지지 않고 좌표만 변경됩니다.

 

 

 

 

<소스 코드>

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)
= 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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/06   »
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
글 보관함