Tkinter의 Label(레이블) 위젯은 텍스트와 이미지를 화면에 표시할 때 사용하는 기본적인 위젯입니다. 이 위젯의 속성을 적절히 설정하면 프로그램 실행 중에도 텍스트, 이미지 등 다양한 속성을 자유롭게 변경할 수 있습니다.
레이블을 동적으로 제어하는 핵심 메서드
레이블 위젯을 동적으로 갱신하려면 크게 두 가지 방식을 사용할 수 있습니다.
- config(**options) 메서드: 위젯의 속성을 일괄적으로 변경하는 가장 일반적인 방법입니다.
- 인라인 설정 방식: 예를 들어 텍스트를 변경할 때는
label["text"] = "새 텍스트"처럼 딕셔너리 형태로 직접 값을 지정할 수 있습니다.
반면 화면에서 레이블을 제거하고 싶다면 pack_forget() 메서드를 호출하면 됩니다. 이 메서드는 위젯 객체를 삭제하는 것이 아니라 화면 배치(pack)만 해제하므로, 필요할 때 다시 pack()을 호출해 재표시할 수 있다는 장점이 있습니다.
예제 코드
아래 예제는 버튼 세 개를 통해 레이블을 추가, 제거, 업데이트하는 전체 과정을 보여줍니다.
# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk
from PIL import ImageTk, Image
# Tkinter 윈도우 인스턴스 생성
win = Tk()
# 윈도우 크기 설정
win.geometry("700x350")
def add_label():
global label
label = Label(win, text="1. 새로 생성된 레이블입니다", font=('Arial 18'))
label.pack()
def remove_label():
global label
label.pack_forget()
def update_label():
global label
label["text"] = "2. 야호!! 업데이트되었습니다"
# 레이블 추가/제거/업데이트용 버튼 생성
add = ttk.Button(win, text="새 레이블 추가", command=add_label)
add.pack(anchor=W, pady=10)
remove = ttk.Button(win, text="레이블 제거", command=remove_label)
remove.pack(anchor=W, pady=10)
update = ttk.Button(win, text="레이블 업데이트", command=update_label)
update.pack(anchor=W, pady=10)
win.mainloop()실행 결과
위 코드를 실행하면 세 개의 버튼이 배치된 윈도우가 나타납니다. 각 버튼을 클릭하면 다음과 같이 동작합니다.
- 새 레이블 추가: "새로 생성된 레이블입니다"라는 텍스트를 가진 레이블이 화면에 표시됩니다.
- 레이블 제거: 현재 표시된 레이블이 화면에서 사라집니다.
- 레이블 업데이트: 기존 레이블의 텍스트가 "야호!! 업데이트되었습니다"로 즉시 변경됩니다.

"레이블 업데이트" 버튼을 클릭하면 아래와 같이 레이블의 텍스트가 실시간으로 바뀌는 것을 확인할 수 있습니다.

참고 사항
예제에서는 함수 내부에서 레이블 객체를 공유하기 위해 global 키워드를 사용했습니다. 규모가 커지는 애플리케이션에서는 클래스를 활용해 위젯을 인스턴스 변수로 관리하거나, grid_remove()·place_forget() 같은 배치 해제 메서드를 상황에 맞게 선택하는 것이 좋습니다. 또한 config(text=..., fg=...)처럼 여러 옵션을 한 번에 변경할 수 있어 색상이나 폰트까지 동적으로 조절할 수 있습니다.