为什么我无法关闭 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())。
  • 几何管理器(例如 packgridplace)可能仍在管理旧部件。
  • 对旧帧的引用可能仍然存在,导致垃圾回收无法进行。

考虑在创建并放置下一个帧之前,添加一个调用 self.destroy()(或 self.pack_forget() / self.grid_forget())的方法,以销毁当前帧。

注意:原帖中包含了一张展示不正确关闭情况的截图,这里已省略。

0 浏览
Back to Blog

相关文章

阅读更多 »

无权重新授权此项目

嗨,我是 Mark Pilgrim。你可能记得我,曾写过《Dive Into Python》和《Universal Character Encoding Detector》这些经典作品。我是 chardet 的原作者……

重新授权与 AI 辅助改写

免责声明:我不是律师,也不是版权法或软件许可方面的专家。以下帖子是对近期社区事件和法律……的分析。