我试图关闭一个网格并打开一个旧网格的名称,这样我只需使用一个功能就可以做更多次。
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 return lambda:funcName(param) 文件"",第251行,某事 testgrid.destroy() 文件" C:\ Users \ User \ Anaconda2 \ lib \ lib-tk \ Tkinter.py",第2097行,在>销毁 self.tk.call(' destroy',self._w) TclError:无法调用" destroy"命令:应用程序已被销毁
如何以与我的代码类似的方式为变量testgrid
赋予新值?
答案 0 :(得分:1)
要彻底删除网格,您可以使用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()
NB。当您添加其他小部件时,您需要指定网格位置,否则它将添加到按钮下方。
答案 1 :(得分:0)
destroy()
命令完全删除了小部件,无法重复使用。
您只需使用testgrid.grid_forget()
,而不是添加和删除小部件。这将从用户界面中删除小部件,以后可以使用。如果您不希望使用窗口小部件,可以按如下方式运行命令:
testgrid.grid_forget()
testgrid.destroy()