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

Tkinter 텍스트 위젯에서 마우스 더블 클릭 기본 동작을 설정하는 방법

Tkinter의 텍스트(Text) 위젯은 애플리케이션에 메모장이나 워드패드 같은 텍스트 편집기 기능을 간단히 추가할 수 있는 위젯입니다. 여러 줄에 걸친 사용자 입력을 지원하며, configure() 메서드를 사용해 글꼴, 글자 색상, 배경색 등 다양한 속성을 자유롭게 설정할 수 있습니다.

또한 텍스트 위젯은 태그(tag) 기능을 함께 제공하기 때문에 특정 텍스트 범위를 선택하거나 스타일을 적용할 수 있습니다. 이 기능을 확장하면 마우스 더블 클릭 이벤트를 직접 바인딩하여, 기본으로 제공되는 '단어 하나 선택' 동작 대신 원하는 동작으로 손쉽게 변경할 수 있습니다.

예제 코드

아래 예제에서는 더블 클릭 시 기본 동작인 '단어 선택' 대신, 텍스트 위젯 안의 모든 내용을 한 번에 선택하도록 이벤트를 재구성했습니다.

# 필요한 라이브러리 임포트
from tkinter import *

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

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

# 현재 입력된 텍스트 전체를 선택하는 함수 정의
def select_all():
    text.tag_add("start", "1.0", "end")
    return "break"

# 텍스트 위젯 생성
text = Text(win, width=50, height=10, font=('Calibri 14'))
text.pack()
text.insert(INSERT, "단어 하나를 선택한 뒤 더블 클릭해 보세요")

# 마우스 더블 클릭 이벤트와 함수 바인딩
text.bind('<Double-1>', select_all)

win.mainloop()

실행 결과

위 코드를 실행하면 미리 입력된 텍스트가 담긴 텍스트 위젯이 화면에 나타납니다. 이 상태에서 아무 단어나 더블 클릭해 보세요. 해당 단어만 선택되는 것이 아니라 위젯 안의 전체 텍스트가 한 번에 선택되는 것을 확인할 수 있습니다.

Tkinter 텍스트 위젯에서 마우스 더블 클릭 기본 동작을 설정하는 방법

핵심 포인트 정리

  • <Double-1> : 마우스 왼쪽 버튼을 더블 클릭했을 때 발생하는 이벤트입니다.
  • tag_add() : 시작 위치("1.0")부터 끝("end")까지의 범위에 태그를 추가해 텍스트를 선택합니다.
  • return "break" : 이벤트 핸들러 종료 후 Tkinter의 기본 동작(단어 선택)이 추가로 실행되지 않도록 이벤트 전파를 차단하는 역할을 합니다.

이처럼 bind() 메서드와 태그 기능을 조합하면 더블 클릭뿐만 아니라 트리플 클릭 등 다양한 마우스 이벤트도 자유롭게 재정의할 수 있습니다.