Tkinter框架无法正确销毁并创建新框架的问题求助
Tkinter框架无法正确销毁并创建新框架的问题求助
我做了这个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 = self.prod_text.get("1.0", tk.END) self.final_text.delete("1.0", tk.END) self.final_text.insert(tk.END, text) def use_test(self): text = self.test_text.get("1.0", tk.END) self.final_text.delete("1.0", tk.END) self.final_text.insert(tk.END, text) def build_ui(self): self.lang_label = ttk.Label(self.root, text="", font=("Arial", 14, "bold")) self.lang_label.pack(pady=10) frame = ttk.Frame(self.root) frame.pack(fill="both", expand=True) # PROD ttk.Label(frame, text="Prod Body").grid(row=0, column=0) self.prod_text = tk.Text(frame, height=15, width=50) self.prod_text.grid(row=1, column=0, padx=5) self.prod_text.insert("1.0",self.prod_text_content) # TEST ttk.Label(frame, text="Test Body").grid(row=0, column=1) self.test_text = tk.Text(frame, height=15, width=50) self.test_text.grid(row=1, column=1, padx=5) self.test_text.insert("1.0",self.test_text_content) # FINAL ttk.Label(frame, text="Final Body").grid(row=2, column=0, columnspan=2) self.final_text = tk.Text(frame, height=15, width=105) self.final_text.grid(row=3, column=0, columnspan=2, pady=5) button_frame = ttk.Frame(frame) button_frame.grid(row=4, column=0, columnspan=2, pady=10) ttk.Button(button_frame, text="Use Prod", command=self.use_prod).pack(side="left", padx=5) ttk.Button(button_frame, text="Use Test", command=self.use_test).pack(side="left", padx=5) ttk.Button(button_frame, text="Next", command=self.next_clicked).pack(side="right", padx=5) class TemplateWizard: def __init__(self, root, folder, template_name_without_env, lang_order, aggregate): self.root = root self.folder = folder self.template_name_without_env = template_name_without_env self.lang_order = lang_order self.aggregate = aggregate self.lang_index = 0 self.current_screen = None self.root.title("Template Wizard") self.root.geometry("1100x800") self.final = { "body":{ "el":"", "en":"" }, "buttons":[] } self.show_next_language() def show_next_language(self): if self.lang_index >= len(self.lang_order): print("Wizard finished") print("Final selections:", self.aggregate.get("final", {})) self.root.destroy() return lang = self.lang_order[self.lang_index] prod_text = self.aggregate[f"prod_{self.template_name_without_env}"][lang]['body'] test_text = self.aggregate[f"test_{self.template_name_without_env}"][lang]['body'] self.current_screen = SelectBodyScreen( root=self.root, lang=lang, prod_text=prod_text, test_text=test_text, on_next=self.on_screen_next ) self.current_screen.pack(fill="both", expand=True) def on_screen_next(self, selected_body): lang = self.lang_order[self.lang_index] self.final['body'][lang]=selected_body print(selected_body) # # Store selected body # if "final" not in self.aggregate: # self.aggregate["final"] = {} # self.aggregate["final"][lang] = selected_body self.lang_index += 1 self.current_screen.destroy() self.show_next_language()
我正在实现一个向导,允许我从aggregate中选择值。
我的问题是当我点击next按钮时,出现了这样的情况:

框架没有被正确销毁,新框架直接叠在了旧框架的下面。我该怎么修复这个问题?
备注:内容来源于stack exchange,提问作者Dimitrios Desyllas
相关产品推荐
相关产品推荐

