Python

(파이썬) 터틀 스크린의 마우스 클릭 이벤트 처리하기

고니자니 2022. 10. 5. 20:07
반응형

 

이벤트가 발생했을 때, 이벤트를 처리하기 위해 호출되는 함수를 콜백 함수라고 합니다.

터틀 스크린에서 마우스를 클릭해서 이벤트가 발생했을 때 onscreenclick() 함수로 콜백 함수를 등록할 수 있습니다.

def draw_position(x, y):
…


s = turtle.screen()
s.onscreenclick(draw_position)
s.listen()

 

 

콜백 함수를 사용하지 않고 함수를 직접 호출하여 실행할 수도 있습니다.

s.onscreenclick(s.goto)
s.listen()

 

onscrrenclick 함수의 인수를 통해 마우스를 클릭한 버튼에 따라 서로 다른 콜백 함수를 호출할 수 있습니다. Onscreenclick 함수의 두 번째 인수는 마우스 버튼을 구분하여 처리할 수 있습니다.

1은 왼쪽 버튼, 2는 가운데 버튼, 3은 오른쪽 버튼을 의미합니다.

s = turtle.Screen()
s.onscreenclick(func_1, 1)  # 마우스 왼쪽 버튼을 클릭하면 func_1 함수를 처리
s.onscreenclick(func_3, 3) # 마우스 오른쪽 버튼을 클릭하면 func_1 함수를 처리
s.listen()

 

 

예제

import turtle as t

def print_xy(x, y):
    t.goto(x, y)
    t.stamp()   # 도장을 찍습니다.
    t.write("x:%d, y:%d"%(x,y))

def screen_clear(x, y):
    t.goto(x,y)
    t.clear()

t.shape("turtle")   
t.setup(500, 500)  # 터틀 스크린 크기를 500x500으로 설정합니다.
s = t.Screen()
t.penup()

s.onscreenclick(print_xy, 1)        # 마우스 왼쪽 버튼을 누르면 처리할 콜백 함수 등록
s.onscreenclick(screen_clear, 3)    # 마우스 오른쪽 버튼
s.listen()                          # 사용자 입력을 위한 포커스 처리 및 이벤트 발생 확인

 

(Output)

반응형