Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 tkinter로 마우스 좌표를 따라 선 그리기 완벽 가이드

tkinter에서 마우스 좌표를 따라 선을 그리려면, 마우스 클릭 시마다 해당 좌표를 캡처하는 함수를 만들고, 연속된 두 점 사이에 선을 그리는 방식으로 구현할 수 있습니다. 아래 예제를 통해 자세히 알아보겠습니다.

구현 단계

  • tkinter 라이브러리를 임포트하고 tkinter 프레임의 인스턴스를 생성합니다.

  • geometry 메서드를 사용하여 프레임(윈도우)의 크기를 설정합니다.

  • 마우스 클릭의 x, y 좌표를 캡처하는 사용자 정의 메서드 "draw_line"을 작성합니다. 이후 Canvas의 create_line() 메서드를 사용해 연속된 두 점 사이에 선을 그립니다.

  • 마우스 왼쪽 버튼 클릭 이벤트를 draw_line 메서드에 바인딩합니다.

  • 마지막으로 애플리케이션 윈도우의 mainloop를 실행합니다.

예제 코드

# 라이브러리 임포트
import tkinter as tk

# tkinter 인스턴스 생성
win = tk.Tk()

# 윈도우 크기 설정
win.geometry("700x300")

# 연속된 두 점 사이에 선을 그리는 메서드
def draw_line(e):
   x, y = e.x, e.y
   if canvas.old_coords:
      x1, y1 = canvas.old_coords
      canvas.create_line(x, y, x1, y1, width=5)
   canvas.old_coords = x, y

canvas = tk.Canvas(win, width=700, height=300)
canvas.pack()
canvas.old_coords = None

# 마우스 왼쪽 버튼 클릭 이벤트 바인딩
win.bind('<ButtonPress-1>', draw_line)

win.mainloop()

실행 결과

위 코드를 실행하면 마우스 왼쪽 버튼 클릭 위치를 추적하여, 연속된 두 점 사이마다 선이 그려집니다. 클릭할 때마다 이전 좌표가 저장되고, 다음 클릭 시 두 좌표를 연결하는 선이 캔버스에 표시됩니다.

파이썬 tkinter로 마우스 좌표를 따라 선 그리기 완벽 가이드

추가 팁

선의 색상이나 굵기를 변경하고 싶다면 create_line() 메서드에 fill 또는 width 옵션을 추가하면 됩니다. 예를 들어 canvas.create_line(x, y, x1, y1, width=5, fill="red")처럼 작성하면 빨간색 선을 그릴 수 있습니다. 또한 마우스 드래그로 실시간 선을 그리고 싶다면 <B1-Motion> 이벤트를 바인딩하는 방법도 활용할 수 있습니다.