일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- OpenCV
- 장고
- Tkinter
- 논문 리뷰
- Deep Learning
- 컴퓨터 비전
- FLASK
- numpy
- 파이썬
- pytorch
- kubernetes
- Web Programming
- POD
- yaml
- 데이터베이스
- Computer Vision
- vue.js
- 웹 프로그래밍
- paper review
- tensorflow
- 파이토치
- 딥러닝
- Python
- Docker
- 그래픽 유저 인터페이스
- Django
- 텐서플로우
- k8s
- GUI
- MariaDB
- Today
- Total
Maxima's Lab
[Python, Tkinter] Graphic User Interface (GUI) - Event (이벤트) 본문
[Python, Tkinter] Graphic User Interface (GUI) - Event (이벤트)
Minima 2022. 7. 24. 00:49안녕하세요, 오늘은 Tkinter 모듈을 사용하여, GUI 중 Event (이벤트)를 적용하는 방법에 대해서 알아보겠습니다.
다음은 Event를 구성하는 항목들은 다음과 같습니다.
- <Key> : 키보드 내 특정 키를 입력하였을 때 발생하는 이벤트
- <Button> : <Button-1>, <Button-2>, <Button-3>, <Button-4>, <Button-5>으로 구성되어 있는 이벤트
<Button-1> : 마우스의 왼쪽 버튼을 눌렀을 때 발생하는 이벤트
<Button-2> : 마우스 가운데 버튼을 눌렀을 때 발생하는 이벤트
<Button-3> : 마우스 오른쪽 버튼을 눌렀을 때 발생하는 이벤트
<Button-4> : 마우스 스크롤을 위 방향으로 할 때 발생하는 이벤트
<Button-5> : 마우스 스크롤을 아래 방향으로 할 때 발생하는 이벤트 - <Motion> : 마우스 커서를 움직일 때 발생하는 이벤트
<B1-Motion> : 마우스 왼쪽 버튼을 누른 상태로 마우스 커서를 움직일 때 발생하는 이벤트
<B2-Motion> : 마우스 가운데 버튼을 누른 상태로 마우스 커서를 움직일 때 발생하는 이벤트
<B3-Motion> : 마우스 오른쪽 버튼을 누른 상태로 마우스 커서를 움직일 때 발생하는 이벤트 - <ButtonRelease> : 마우스 버튼을 누르던 것을 멈췄을 때 발생하는 이벤트
<ButtonRelease-1> : 마우스 왼쪽 버튼을 누르던 것을 멈췄을 때 발생하는 이벤트
<ButtonRelease-2> : 마우스 가운데 버튼을 누르던 것을 멈췄을 때 발생하는 이벤트
<ButtonRelease-3> : 마우스 오른쪽 버튼을 누르던 것을 멈췄을 때 발생하는 이벤트 - <Double-Button> : 마우스 버튼을 2번 눌렀을 때 발생하는 이벤트
<Double-Button-1> : 마우스 왼쪽 버튼을 2번 눌렀을 때 발생하는 이벤트
<Double-Button-2> : 마우스 가운데 버튼을 2번 눌렀을 때 발생하는 이벤트
<Double-Button-3> : 마우스 오른쪽 버튼을 2번 눌렀을 때 발생하는 이벤트
위의 내용들에 대해 Event(이벤트)를 messagebox와 message를 활용하여 구현해보겠습니다.
다음은, messagebox를 활용하여 키보드 내 특정 키를 입력하였을 때 해당 키를 messagebox.info 로 출력하는 예시입니다.
from tkinter import *
from tkinter import messagebox
win = Tk()
win.title("Maxima")
win.geometry("800x600+200+200")
win.resizable(False, False)
def keyfunc_1(event):
messagebox.showinfo(message = event.keysym)
win.bind("<Key>", keyfunc_1)
win.mainloop()
아래 이미지는 키보드 버튼 중 "d"를 눌렀을 때 출력되는 결과입니다.
위의 전체 코드를 구성하는 코드들에 대해 세부적으로 알아보겠습니다.
def keyfunc_1(event):
messagebox.showinfo(message = event.keysym)
위의 함수는 Key event 입력을 받았을 때 입력된 키보드를 message로 설정하여 messagebox.showinfo()를 실행하는 함수입니다.
win.bind("<Key>", keyfunc_1)
위의 코드는 <Key> 이벤트를 win에 연결시켜 주며, 해당 이벤트가 발생하였을 때 keyfunc_1 함수를 실행하게 됩니다.
다음은 마우스 왼쪽 버튼을 누른 상태에서 마우스 커서을 움직일 때 이동하는 위치(x, y)에 대해서 message로 윈도우 창에 출력하는 예시입니다.
from tkinter import *
from tkinter import messagebox
win = Tk()
win.title("Maxima")
win.geometry("800x600+200+200")
win.resizable(False, False)
def motionfunc_1(event):
# print(event.x, event.y)
loc = str(({}, {})).format(event.x, event.y)
message = Message(win, text=loc, width=100)
message.pack()
win.bind("<B1-Motion>", motionfunc_1)
win.mainloop()
아래 이미지는 왼쪽 마우스 버튼을 누른 상태로 마우스 커서를 움직였을 때 실제 출력되는 결과입니다.
위의 전체 코드를 구성하는 코드들에 대해 세부적으로 알아보겠습니다.
def motionfunc_1(event):
# print(event.x, event.y)
loc = str(({}, {})).format(event.x, event.y)
message = Message(win, text=loc, width=100)
message.pack()
위의 함수는 event를 입력으로 받았을 때, event 내 마우스 커서의 좌표 (x, y)를 string의 형태 변수로 설정하여, Message 내 text로 구성하여 윈도우 창에 pack() 하는 함수입니다.
win.bind("<B1-Motion>", motionfunc_1)
위의 코드는 <B1_motion> 이벤트를 win에 연결시켜 주며, 해당 이벤트가 발생하였을 때 motionfunc_1 함수를 실행하게 됩니다.
지금까지, Tkinter 모듈을 사용하여, Graphic User Interface (GUI)의 이벤트를 적용하는 방법에 대해서 알아보았습니다.