为什么我无法关闭 A Tkinter 框架并创建另一个?
发布: (2026年3月5日 GMT+8 01:20)
2 分钟阅读
原文: Dev.to
Source: Dev.to
问题
我正在制作一个向导,在点击 Next 时会生成一个新帧并关闭之前的帧。我的问题是,前一个帧没有被正确关闭,如截图所示(此处未提供)。
代码
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)可能仍在管理旧部件。 - 对旧帧的引用可能仍然存在,导致垃圾回收无法进行。
考虑在创建并放置下一个帧之前,添加一个调用 self.destroy()(或 self.pack_forget() / self.grid_forget())的方法,以销毁当前帧。
注意:原帖中包含了一张展示不正确关闭情况的截图,这里已省略。