반응형
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 이벤트 본문

dev-log/python

[Python] Tkinter 이벤트

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

출처 : http://pythonstudy.xyz/

 

이벤트 핸들링

Tkinter 위젯들은 종종 버튼 클릭이나 메뉴 클릭과 같은 기본적인 이벤트 처리를 위한 속성을 제공하고 있다. 예를 들어, 버튼이나 메뉴 클릭을 핸들링 위해 "command=" 옵션을 사용할 수 있다.

아래 예제는 OK 버튼이 클릭되었을 때, okClick()이라는 함수를 실행하도록 하는 코드이다.

from tkinter import *
from tkinter import messagebox
 
root = Tk()
 
# 버튼 클릭 이벤트 핸들러
def okClick():
    name = txt.get()
    messagebox.showinfo("이름", name)
 
lbl = Label(root, text="이름")
lbl.grid(row=0, column=0)
txt = Entry(root)
txt.grid(row=0, column=1)
 
# 버튼 클릭 이벤트와 핸들러 정의
btn = Button(root, text="OK", command=okClick)
 
btn.grid(row=1, column=1)
 
root.mainloop()

 

이벤트 바인딩

Tkinter 위젯에는 위에 설명한 기본적인 이벤트 핸들링 외에도 보다 다양한 이벤트를 처리할 수 있도록 이벤트 바인딩 기능을 제공하고 있다. Tkinter 위젯은 이벤트(event)와 이벤트 핸들러 (메서드 혹은 함수)를 연결하는 bind() 메서드를 가지고 있다. 즉, bind() 메서드는 이벤트와 핸들러를 쌍으로 연결시는 역활을 한다. 만약 해당 위젯에 그 이벤트가 발생하면 쌍으로 연결된 이벤트핸들러(=이벤트 콜백)가 실행되게 된다.

위젯.bind(event, handler)

아래 예제는 가로/세로 300px의 프레임 안에서 왼쪽 마우스 버튼을 누르면, click() 이라는 핸들러를 실행하게 하는 코드이다. <Button-1> 은 Tkinter에서 사용하는 이벤트 명칭으로 마우스 왼쪽 버튼을 의미한다.

from tkinter import *
root = Tk()
 
def click(event):
    print("클릭위치", event.x, event.y)
 
frame = Frame(root, width=300, height=300)
 
 #왼쪽 마우스 버튼 바인딩
frame.bind("<Button-1>", click) 
 
frame.pack()
root.mainloop()
반응형

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

[django] 프로젝트 만들기 요약  (0) 2023.10.11
[Python] Tkinter event 종류  (0) 2023.02.18
[Python] Tkinter 위젯 종류  (0) 2023.02.18
[Python] Tkinter 시작하기  (0) 2023.02.18
[python] Django Static file 연결  (0) 2023.01.30
Comments