Tkinter란 무엇인가?
Tkinter는 파이썬(Python)으로 GUI 기반 애플리케이션을 개발할 때 사용되는 대표적인 표준 라이브러리입니다. Tkinter는 애플리케이션의 성능과 동작을 최적화할 수 있는 다양한 내장 기능과 확장 요소를 제공하며, 그중 이벤트(Event)는 사용자와 애플리케이션 로직 사이를 연결하는 다리 역할을 합니다.
이벤트를 활용하면 마우스 클릭, 키보드 입력, 포커스 이동 등 사용자의 동작에 애플리케이션이 즉각 반응하도록 만들 수 있으며, 이를 통해 어떤 Tkinter 애플리케이션이든 실질적으로 조작 가능하고 기능적인 프로그램으로 완성할 수 있습니다.
자주 사용되는 Tkinter 이벤트 목록
애플리케이션을 인터랙티브하게 만들 때 일반적으로 사용되는 대표적인 Tkinter 이벤트는 다음과 같습니다.
- <Button> — 마우스 버튼과 휠 동작을 핸들러에 바인딩할 때 사용하는 이벤트입니다.
- <ButtonRelease> — 버튼을 클릭하는 대신, 마우스 버튼을 놓는 순간에 이벤트를 발생시킬 수 있습니다.
- <Configure> — 위젯의 속성(크기, 위치 등)이 변경될 때 사용하는 이벤트입니다.
- Destroy — 특정 위젯을 종료하거나 제거할 때 사용합니다.
- <Enter> — 마우스 포인터가 위젯 영역 안으로 진입할 때 발생하며, 해당 위젯에 포커스를 두는 동작과 함께 활용할 수 있습니다.
- <Expose> — 애플리케이션의 위젯 또는 일부 영역이 다른 창에 가려졌다가 다시 화면에 나타날 때마다 발생합니다.
- <FocusIn> — 특정 위젯이 입력 포커스를 얻었을 때 발생하는 이벤트입니다.
- <FocusOut> — 현재 위젯에서 포커스가 벗어나 다른 곳으로 이동할 때 발생합니다.
- <KeyPress> — 키를 누르는 순간 프로세스를 시작하거나 핸들러를 호출합니다.
- <KeyRelease> — 눌렀던 키를 놓는 순간 프로세스를 시작하거나 이벤트를 호출합니다.
- <Leave> — 사용자가 한 위젯에서 다른 위젯으로 마우스 포인터를 옮길 때 이동 경로를 추적하는 데 사용합니다.
- <Map> — 애플리케이션 화면에 위젯을 표시하거나 나타낼 때 사용하는 이벤트입니다.
- <Motion> — 마우스 포인터가 애플리케이션 영역 안에서 움직일 때마다 발생하는 이벤트를 추적합니다.
- <Unmap> — 위젯을 화면에서 매핑 해제(숨김)할 때 발생하며, grid_remove()로 위젯을 숨기는 것과 유사한 동작입니다.
- <Visibility> — 애플리케이션의 일부가 화면에 보이게 될 때 발생할 수 있는 이벤트입니다.
실습 예제
다음 예제에서는 <Button> 이벤트를 활용하여, 마우스 버튼을 누를 때마다 창에 메시지가 표시되도록 구현합니다.
# 필요한 라이브러리 임포트
from tkinter import *
# tkinter 프레임(윈도우) 인스턴스 생성
win = Tk()
# 윈도우 크기 설정
win.geometry("700x350")
# 메시지를 표시하는 함수 정의
def display_text(e):
label.config(text="코드는 거짓말하지 않지만, 주석은 때때로 거짓말한다", font=('Helvetica 17 bold'))
# 텍스트를 담을 라벨 위젯 생성
label = Label(win, text="")
label.pack(pady=50)
# 마우스 버튼 이벤트 바인딩
win.bind('<Button-1>', display_text)
win.mainloop()실행 결과
위 파이썬 스크립트를 실행하면 아무 내용 없는 빈 창이 먼저 나타납니다. 이 상태에서 창을 왼쪽 클릭하면 지정해 둔 메시지가 화면에 출력되는 것을 확인할 수 있습니다.
