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

Tkinter 위젯을 화면에서 숨기는 방법 – pack_forget() 완벽 정리

Tkinter로 GUI를 개발하다 보면 특정 위젯을 화면에서 일시적으로 숨겨야 하는 경우가 종종 있습니다. 이럴 때 사용하는 것이 바로 pack_forget() 메서드입니다. 이 메서드는 윈도우에 배치된 위젯의 매핑을 해제(unmap)하여 화면에서 보이지 않게 만들지만, 위젯 객체 자체는 메모리에 그대로 남아 있기 때문에 언제든지 다시 표시할 수 있다는 장점이 있습니다.

예제 코드

다음 예제에서는 화면에 표시되는 레이블(Label)과 버튼(Button)을 생성하고, 버튼을 클릭하면 레이블이 화면에서 사라지도록 구현해 보겠습니다.

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

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

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

# 창 크기 조절 비활성화
win.resizable(False, False)

# 위젯을 숨기는 함수
def make_invisible(widget):
    widget.pack_forget()

# 레이블 생성
label = Label(win, text="Hello World!", font=('Helvetica bold', 20), anchor="center")
label.pack(pady=20)

# 위젯을 숨기는 버튼 생성
btn = Button(win, text="Click", font=('Helvetica bold', 10), command=lambda: make_invisible(label))
btn.pack(pady=20)

win.mainloop()

실행 결과

위 코드를 실행하면 다음과 같은 창이 나타납니다.

Tkinter 위젯을 화면에서 숨기는 방법 – pack_forget() 완벽 정리

이제 "Click" 버튼을 클릭해 보세요. 버튼이 눌리는 순간 make_invisible() 함수가 호출되고, 레이블에 적용된 pack_forget()에 의해 "Hello World!" 텍스트가 화면에서 사라집니다.

Tkinter 위젯을 화면에서 숨기는 방법 – pack_forget() 완벽 정리

참고: 다른 레이아웃 관리자에서 위젯 숨기기

위젯을 배치할 때 어떤 지오메트리 관리자를 사용했느냐에 따라 숨기는 메서드가 달라집니다.

  • pack()으로 배치한 경우 → pack_forget()
  • grid()로 배치한 경우 → grid_forget() 또는 grid_remove()
  • place()로 배치한 경우 → place_forget()

특히 grid_remove()는 위젯의 위치·크기 옵션을 기억하고 있다가 grid()만 호출하면 원래 자리에 복원할 수 있어, 위젯을 다시 보여줄 계획이 있다면 더욱 편리합니다. 반면 pack_forget()으로 숨긴 위젯을 다시 표시하려면 label.pack(pady=20)처럼 배치 옵션을 포함해 다시 호출해 주어야 합니다.