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

Tkinter에서 엔트리(Entry) 위젯을 클릭할 때 내용을 자동으로 지우는 방법

Tkinter의 Entry 위젯은 사용자로부터 한 줄 텍스트 입력을 받는 대표적인 입력 위젯입니다. 이 위젯에 입력된 내용은 delete(0, END) 명령을 통해 간단하게 삭제할 수 있습니다. 나아가 사용자가 엔트리 위젯 자체를 클릭하는 순간 내용이 자동으로 지워지도록 만들 수도 있는데, 이는 클릭 이벤트에 함수를 바인딩(binding)하는 방식으로 구현합니다.

동작 원리

구현 과정은 다음과 같습니다.

  • 엔트리 위젯에 미리 안내 문구(플레이스홀더)를 삽입해 둡니다.
  • <Button-1>(마우스 왼쪽 버튼 클릭) 이벤트에 내용을 지우는 함수를 바인딩합니다.
  • 함수가 실행되면 위젯 상태를 NORMAL로 변경한 뒤 delete(0, END)로 전체 내용을 삭제하고, 더 이상 반복 실행되지 않도록 바인딩을 해제합니다.

예제 코드

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

#Tkinter 프레임 인스턴스 생성
win = Tk()

#프레임 크기 설정
win.geometry("700x250")

#엔트리 위젯의 내용을 지우는 함수 정의
def click(event):
   name.configure(state=NORMAL)
   name.delete(0, END)
   name.unbind('<Button-1>', clicked)

#라벨 위젯 생성
label = Label(win, text="Enter Your Name", font=('Helvetica 13 bold'))
label.pack(pady=10)

#엔트리 위젯 생성 및 초기 문구 삽입
name = Entry(win, width=45)
name.insert(0, 'Enter Your Name Here...')
name.pack(pady=10)

#마우스 클릭 이벤트를 엔트리 위젯에 바인딩하여 내용 지우기
clicked = name.bind('<Button-1>', click)
win.mainloop()

코드 설명

click(event) 함수는 세 가지 작업을 순서대로 수행합니다. 먼저 configure(state=NORMAL)로 위젯을 편집 가능한 상태로 만들고, delete(0, END)로 처음부터 끝까지 모든 텍스트를 삭제합니다. 마지막으로 unbind를 호출해 클릭 이벤트와의 연결을 해제하므로, 이후에는 사용자가 자유롭게 텍스트를 입력할 수 있습니다.

실행 결과

위 코드를 실행하면 안내 문구가 채워진 엔트리 위젯이 포함된 창이 나타납니다.

Tkinter에서 엔트리(Entry) 위젯을 클릭할 때 내용을 자동으로 지우는 방법

엔트리 필드를 클릭하면 기존 문구가 자동으로 사라지고 새로운 입력을 시작할 수 있습니다.

Tkinter에서 엔트리(Entry) 위젯을 클릭할 때 내용을 자동으로 지우는 방법