반응형
마우스로 윈도우의 그림판처럼 그림을 그리는 프로그램을 작성해보자.
from tkinter import*
def paint(event):
x1, y1 = (event.x-1), (event.y+1)
x2, y2 = (event.x-1), (event.y+1)
canvas.create_oval(x1, y1, x2, y2)
window = Tk()
canvas = Canvas(window)
canvas.pack()
canvas.bind("<B1-Motion>", paint)
window.mainloop()
▶ 이벤트 핸들러는 event라는 하나의 매개변수를 가짐
→ event는 Tkinter Event Object로서 여러개의 속성을 가짐
→ event.x와 even.y는 위젯의 좌상단에서의 상대적 마우스 위치를 의미
→ 캔버스 위젯에서 (x1, y1)과 (x2, y2)로 정의되는 사각형 안에 그려짐
→ 각각 찍힌 작은 원들이 점처럼 모여 선으로 그려짐
def paint(event):
x1, y1 = (event.x-1), (event.y+1)
x2, y2 = (event.x-1), (event.y+1)
canvas.create_oval(x1, y1, x2, y2)
▶ canvas = Canvas(window) : tkinter에서 그림을 그리기 위해서는 Canvas 위젯이 필요함
▶ canvas.pack() : 생성한 canvas를 압축 배치 관리 방식으로 배치
▶ canvas.bind("<B1-Motion>", paint) : 마우스를 드래그해 움직일 때마다 마우스 이벤트를 처리
→ 마우스 왼쪽 버튼 클릭 : <Button-1>
→ 마우스 중간 버튼 클릭 : <Button-2>
→ 마우스 오른쪽 버튼 클릭 : <Button-3>
→ bind() : 이벤트와 이벤트가 발생했을 때 수행하는 함수(핸들러)를 연결시키는 역할
→ 왼쪽 버튼을 누른 상태에서 캔버스에서 발생하는 <B1-Motion> 이벤트를 paint() 함수와 연결
반응형
'Language > Python' 카테고리의 다른 글
[ Python ] 학급 학생들의 성적 산출 프로그램 (0) | 2021.09.26 |
---|---|
[ Python ] 랜덤 혈액형 개수 맞추기 프로그램 (0) | 2021.09.26 |
[ Python ] tkinter 윈도우 창 메뉴 만들기 (0) | 2021.09.14 |
[ Python ] tkinter 위젯 색상 / 폰트 변경 프로그램 (0) | 2021.09.14 |
[ Python ] tkinter 버튼 이벤트 처리 프로그램 (0) | 2021.09.14 |