Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python列表框项不存在';t在Tkinter中切换窗口时终止_Python_Tkinter_Listbox - Fatal编程技术网

Python列表框项不存在';t在Tkinter中切换窗口时终止

Python列表框项不存在';t在Tkinter中切换窗口时终止,python,tkinter,listbox,Python,Tkinter,Listbox,我的Python代码有问题,我使用Tkinter制作应用程序并在窗口之间切换,其中一个窗口有以下代码: 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.L

我的Python代码有问题,我使用Tkinter制作应用程序并在窗口之间切换,其中一个窗口有以下代码:

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函数时,列表框保持在新屏幕中,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.\u frame.destroy()不会破坏列表框,它会保留在顶部的每个窗口中,其余部分我的代码会完成它想要做的一切。我希望有人知道我遗漏了什么。

问题是您将
主文件设置为listbox父文件。改用
self.sbox=tk.Listbox(self)
。希望对你有帮助

因为它的父窗口是
主窗口
,即根窗口。好的,谢谢,我现在知道了。这很有帮助!是的,我已经被指出来了,现在没有注意到这一点似乎很愚蠢。。。。我想我被封锁了。非常感谢。