代码之家  ›  专栏  ›  技术社区  ›  user8496104

无法调用销毁命令

  •  0
  • user8496104  · 技术社区  · 9 年前

    我试图关闭一个网格,然后打开一个名为旧网格的新网格,这样我就可以用一个函数多次执行此操作。

    testgrid=a_nice_grid
    def sth(button):
            if button=='filter':
    
                testgrid.destroy()
                global testgrid
                testgrid=app_grid.addGrid(name,data) 
    

    使用此代码,我得到以下错误:

    文件“appJar\appJar.py”,第2724行,in 返回lambda:funcName(参数) 文件“”,第251行,在某物中 文件“C:\Users\User\Anaconda2\lib\lib tk\Tkinter.py”,第2097行,in>摧毁 自己tk。呼叫('destroy',self._w)

    testgrid ,以类似于我的代码的方式?

    2 回复  |  直到 9 年前
        1
  •  1
  •   R.Jarvis    9 年前

    要干净地删除网格,可以使用 app.removeGrid("<grid name>")

    http://appjar.info/pythonWidgetOptions/#widget-manipulation

    然后,当您添加另一个网格时,它可以具有相同的名称:

    def press(button):
       app.removeGrid("g")
       app.addGrid("g", [["a", "b", "c"]], 0, 0)
    
    app = gui()
    app.addGrid("g", [["a", "b", "c"]])
    app.addButton("PRESS", press)
    app.go()
    

    注意。 当您添加另一个小部件时,您需要指定网格位置,否则它将添加到按钮下方。

        2
  •  0
  •   v.coder    9 年前

    destroy() 命令将完全删除小部件,并且无法重复使用。

    testgrid.grid_forget() . 这将从用户界面中删除小部件,以后可以使用。如果您不想打开小部件,可以按如下方式运行命令:

    testgrid.grid_forget()
    testgrid.destroy()