在Tkinter中切换窗口时,Python-Listbox项不会终止。

问题描述 投票:1回答:1

我的Python代码遇到了一个问题,我用Tkinter做了一个App,并在窗口之间切换,其中一个窗口有如下代码。

def __init__(self, master):
    tk.Frame.__init__(self, master)
    master.title("Chain Targets:")
    master.geometry("400x800")
    tk.Label(self, text="Chain Targets").grid()
    self.sbox = tk.Listbox(master)
    self.sbox.grid(row=0, column=0)
    number=1
    for k in sorted(target_list, key=target_list.get, reverse=True):
        place_target= str(number) + "   " + k + "    " + str(target_list[k])
        self.sbox.insert(number,place_target)
        number+=1
    tk.Scrollbar.grid(self)

    tk.Button(self, text="Main Menu",
              command=lambda: master.switch_frame(MainPage)).grid()

现在这一切都很好,除了当使用switch_frame函数时 Listbox会停留在新屏幕上,switch_frame函数如下:

    def switch_frame(self, frame_class):
    """Destroys current frame and replaces it with a new one."""
    new_frame = frame_class(self)
    if self._frame is not None:
        self._frame.destroy()
    self._frame = new_frame
    self._frame.grid()

不知怎的,我无法理解self._frame.destroy()并没有破坏Listbox,而是让它停留在顶部的每个窗口中,其余的部分,我的代码做了它想做的一切。我希望有人能知道我遗漏了什么。

python tkinter listbox
1个回答
1
投票

问题是你把 master 作为列表框的父级。使用 self.sbox = tk.Listbox(self) 而不是。希望对大家有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.