Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.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
Tcl错误:错误的窗口路径名(Python)_Python_Python 2.7_Tkinter_Tkinter Layout - Fatal编程技术网

Tcl错误:错误的窗口路径名(Python)

Tcl错误:错误的窗口路径名(Python),python,python-2.7,tkinter,tkinter-layout,Python,Python 2.7,Tkinter,Tkinter Layout,在其中一个视图中,有一个用于关闭实际视图的按钮,它可以工作,但当我尝试再次打开视图时,它会显示下一个错误: Exception in Tkinter callback Traceback (most recent call last): File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1545, in __call__ return self.func(*args) File "/home/htm97/Doc

在其中一个视图中,有一个用于关闭实际视图的按钮,它可以工作,但当我尝试再次打开视图时,它会显示下一个错误:

Exception in Tkinter callback
Traceback (most recent call last):
    File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1545, in __call__
        return self.func(*args)
      File "/home/htm97/Documents/data/workspace/repositories/projects-h/locker-system/src/gui/MainMenu.py", line 27, in verify_lockers_window
        self.app = vl.Lockers(self.vlWindow)
      File "/home/htm97/Documents/data/workspace/repositories/projects-h/locker-system/src/gui/Lockers.py", line 19, in __init__
        self.buttonsList[i].grid(columnspan = 4)
      File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 2032, in grid_configure
        + self._options(cnf, kw))
TclError: bad window path name ".140687059771120.140687059776216.140687059776504.140687059776576"
销毁窗口的功能是:

def close_windows(self):                                                                                                                   
    "This function destroys the window"                                                                                                    
    self.master.destroy() 
这是一种观点:

import Tkinter as tk
class Lockers:
    lockerList = ["1", "2", "3", "4", "5"]
    buttonsList = []

    def __init__(self, master):
        self.master = master
        self.frame = tk.Frame(self.master)
        self.master.minsize(width = 250, height = 200)
        self.initialize_lockers()

        self.frame.grid()

        tk.Label(self.frame, text = "Seleccione el locker que desea revisar:").grid(row = 0, columnspan = 4)

        i = 0
        while i < len(self.lockerList):
            self.buttonsList[i].grid(columnspan = 4) #HERE THE ERROR
            i += 1

        tk.Label(self.frame, text = "").grid(columnspan = 4)
        self.quitButton = tk.Button(self.frame, text = 'Salir', width = 8, command = self.close_windows)
        self.quitButton.grid(column = 1, columnspan = 2)
将Tkinter作为tk导入
等级储物柜:
lockerList=[“1”、“2”、“3”、“4”、“5”]
按钮列表=[]
定义初始(自我,主):
self.master=master
self.frame=tk.frame(self.master)
self.master.minsize(宽度=250,高度=200)
self.initialize_lockers()
self.frame.grid()
tk.Label(self.frame,text=“Seleccione el locker que desea revisar:”).grid(行=0,列span=4)
i=0
而我
函数
初始化储物柜()
将一些按钮附加到按钮列表中


阅读一段时间后,我发现在执行
destroy()
并尝试对某些内容进行网格化后,它会显示一个错误,但我不明白为什么。

问题是,我在方法之外声明了buttonsList作为一个属性,当我销毁类的实例时,属性就会消失,所以我必须在构造函数中声明列表,这样做我对销毁没有问题。

如何再次尝试打开?您破坏了窗口,所以必须重新创建它。
destroy
完全按照它的名称执行。销毁小部件后,您不能再次使用它。如果您想隐藏小部件,请使用
grid\u forget
而不是destroy(或
Tk
widgets上的
wm\u iconify
)“如何再次尝试打开?您破坏了窗口,因此必须再次创建它”@furas。当我销毁它时,我按下创建视图的按钮,它会打开一个窗口,但列表中没有对象。感谢您回答“销毁完全按照其名称进行。销毁小部件后,您不能再次使用它。如果您想隐藏小部件,请使用grid_forget而不是destroy(或Tk小部件上的wm_图标)。@Coal。我尝试了
grid\u forget()
,但它只删除窗口中的小部件,不关闭窗口。我想做的是关闭窗口,然后毫无问题地再次打开它。感谢您的回答。
self.app=vl.Lockers(self.vlWindow)
的代码在哪里?什么是
self.vlWindow
?再次打开时是否重新创建了
self.vlWindow
?你不必在评论中引用我们的评论。你也没有“谢谢你的回答”。