반응형
Notice
Recent Posts
«   2024/12   »
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
Today
Total
관리 메뉴

오식랜드

[Python] Tkinter event 종류 본문

dev-log/python

[Python] Tkinter event 종류

개발하는 오식이 2023. 2. 18. 17:35
반응형

출처 : http://pythonstudy.xyz/

 

 

이벤트명

bind() 메서드의 첫번째 파라미터로 사용하는 이벤트명은 문자열로서 <이벤트명> 과 같이 앵글 브래킷으로 묶여 있다.

다음은 자주 사용되는 이벤트명을 예시한 것이다.

  • <Button-1> 마우스 왼쪽 버튼 클릭
  • <Button-2> 마우스 중간 버튼 클릭
  • <Button-3> 마우스 오른쪽 버튼 클릭
  • <Double-Button-1> 왼쪽 버튼 더블클릭
  • <Return> Enter 키 눌려짐
  • <Key> 키가 눌려짐

Event Object

이벤트핸들러(이벤트 콜백)는 event라는 하나의 파라미터를 갖는데, 이는 Tkinter Event Object 로서 다음과 같은 속성(attribute)들을 갖는다. 클릭한 위치값을 나타내는 예제를 보면, click() 함수에서 event 파라미터를 받아들이고, 이 event의 x, y 좌표를 사용하고 있음을 알 수 있다.

  • char 키보트 이벤트에서 발생하는 문자 하나
  • keysym 키보트 이벤트에서 발생하는 키의 심볼명
  • num 마우스 이벤트의 버튼 번호. 왼쪽부터 1, 2, 3
  • x, y 위젯의 죄상단으로부터의 상대적 마우스 위치
  • x_root, y_root 화면 죄상단으로부터의 상대적 마우스 위치
  • Key 이벤트가 발생한 위젯

아래 예제는 Key 이벤트에 대해 keyPressed() 함수를 바인딩하고, 전달된 event.char 를 써서 눌려진 키를 프린트하는 코드이다.

from tkinter import *
 
def keyPressed(event):
    # 키보드 문자하나 출력
    print(event.char)
 
root = Tk()
 
frame = Frame(root, width=100, height=100)
# Key 이벤트 바인딩
frame.bind('<Key>', keyPressed) 
frame.place(x=0, y=0)
 
# 키보드 포커를 갖게 한다
frame.focus_set()
 
root.mainloop()
반응형

'dev-log > python' 카테고리의 다른 글

[django] FBV / CBV 방식  (0) 2023.10.11
[django] 프로젝트 만들기 요약  (0) 2023.10.11
[Python] Tkinter 이벤트  (0) 2023.02.18
[Python] Tkinter 위젯 종류  (0) 2023.02.18
[Python] Tkinter 시작하기  (0) 2023.02.18
Comments