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

Tkinter로 두 번의 마우스 클릭 사이에 선 그리기 구현하기

마우스 버튼으로 창을 클릭하면 해당 좌표를 저장하고 두 지점 사이에 선을 그려주는 GUI 애플리케이션을 만들어야 하는 경우를 생각해 볼 수 있습니다. Tkinter는 사용자가 키나 마우스 버튼을 특정 함수에 바인딩할 수 있게 해주는 이벤트 기능을 제공하므로, 이러한 상호작용형 애플리케이션을 손쉽게 구현할 수 있습니다.

두 점 사이에 선을 그리는 기본 단계

  • 캔버스(Canvas) 위젯을 생성하고 창에 배치하여 화면에 표시합니다.
  • 사용자가 클릭 이벤트를 발생시킬 때 동작하는 draw_line() 함수를 정의합니다.
  • 캔버스에서 발생한 클릭 횟수를 세는 전역 변수를 생성합니다.
  • 클릭 횟수가 2가 되면 첫 번째 좌표와 두 번째 좌표 사이에 선을 그립니다.
  • 마우스 버튼을 콜백 함수와 바인딩하여 이벤트 처리를 완전히 제어합니다.

예제 코드

# 필요한 라이브러리를 임포트합니다
from tkinter import *
from tkinter import ttk

# tkinter 프레임 또는 윈도우 인스턴스를 생성합니다
win = Tk()

# 윈도우 크기를 설정합니다
win.geometry("700x350")

# 두 점 사이에 선을 그리는 함수를 정의합니다
def draw_line(event):
    global click_num, x1, y1
    if click_num == 0:
        # 첫 번째 클릭: 시작 좌표를 저장합니다
        x1 = event.x
        y1 = event.y
        click_num = 1
    else:
        # 두 번째 클릭: 끝 좌표를 저장한 뒤 선을 그립니다
        x2 = event.x
        y2 = event.y
        canvas.create_line(x1, y1, x2, y2, fill="green", width=10)
        click_num = 0

# 캔버스 위젯을 생성합니다
canvas = Canvas(win, width=700, height=350, background="white")
canvas.grid(row=0, column=0)
canvas.bind('<Button-1>', draw_line)
click_num = 0

win.mainloop()

실행 결과

위 코드를 실행하면 윈도우가 화면에 나타납니다. 캔버스 위젯 위의 아무 위치든 두 번 클릭하면 첫 번째 클릭 지점과 두 번째 클릭 지점을 잇는 초록색 선이 캔버스에 그려집니다. 선을 그린 후에는 클릭 카운터가 다시 초기화되므로, 같은 방식으로 계속해서 여러 개의 선을 자유롭게 그릴 수 있습니다.

Tkinter로 두 번의 마우스 클릭 사이에 선 그리기 구현하기