我在类中看到了self.destroy()
的一些用法,但是我不能让它按我想要的那样工作
我有一个类resultsPage
,它显示在另一个页面上获得的结果。我制作了displayResults(pageNo)
函数,当resultsPage
可见时显示这些。问题出现在back和next按钮上,这两个按钮用于在结果页面之间切换。所有的小部件都是在彼此的上面创建的,但是我想删除它们,然后创建新的小部件。我添加了self.destroy()
来尝试修复这个问题,但是没有成功
我不确定这是否与我定义函数的位置有关,但我对它们的定义位置做了一番尝试,但没有改变错误消息
这是我的代码的简化示例:
class resultsPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
def onShowFrame(self, event):
def displayResults(pageNo):
self.destroy()
#Create widgets related to pageNo
#Create back and next buttons e.g.
back = tk.Button(self, text="<=",
command=lambda: displayResults(pageNo - 1))
displayResults(1)
我得到的错误是:_tkinter.TclError: bad window path name ".!frame.!previewresultspage"
如果有帮助的话,我可以发布我的完整代码,但我想我应该推广一下,这样对其他人更有帮助
如前所述,在这种情况下使用
self.destroy()
将不起作用。要实现删除框架上所有小部件的目标,可以使用循环(归功于@stovfl):您正在删除
onShowFrame
中的小部件,然后立即尝试创建一个新的小部件,将其作为父级。不能将已删除的小部件用作另一个小部件的父级相关问题 更多 >
编程相关推荐