왜 나는 Tkinter 프레임을 닫고 다른 프레임을 만들 수 없나요?
발행: (2026년 3월 5일 오전 02:20 GMT+9)
2 분 소요
원문: Dev.to
Source: Dev.to
질문
다음 버튼을 클릭했을 때 Tkinter를 사용하여 현재 프레임을 닫고 새로운 프레임을 생성하는 마법사를 만들고 있습니다. 문제는 이전 프레임이 제대로 닫히지 않아 화면에 남아 있다는 점입니다(스크린샷은 포함되지 않음).
코드
import os
import tkinter as tk
from tkinter import ttk
class SelectBodyScreen(ttk.Frame):
def __init__(self, root, lang, prod_text, test_text, on_next):
super().__init__(root)
self.lang = lang
self.prod_text_content = prod_text
self.test_text_content = test_text
self.root = root
self.build_ui()
self.on_next = on_next
def next_clicked(self):
selected_body = self.final_text.get("1.0", tk.END).strip()
self.on_next(selected_body)
def use_prod(self):
text =
# …
문제
Next 버튼을 누르면 새 프레임은 나타나지만 이전 프레임이 여전히 보이거나(또는 부분적으로만 사라짐) 화면에 남아 있습니다. 기대하는 동작은 새 프레임이 표시되기 전에 이전 프레임이 완전히 파괴되는 것입니다.
조사해볼 수 있는 가능한 원인
- 이전 프레임을 명시적으로 파괴하지 않았을 수 있습니다(
frame.destroy()). - 레이아웃 매니저(예:
pack,grid,place)가 아직도 이전 위젯을 관리하고 있을 수 있습니다. - 이전 프레임에 대한 참조가 남아 있어 가비지 컬렉션이 일어나지 않을 수 있습니다.
새 프레임을 만들고 pack하기 전에 현재 프레임에 대해 self.destroy()(또는 self.pack_forget() / self.grid_forget())를 호출하는 메서드를 추가하는 것을 고려해 보세요.