我使用Tkinter.Text小部件来显示大量不同的子窗口小部件对象。 我使用命令Text.window_create作为show对象。 如果我使用pack,grid或place几何管理器,那么我可以使用_forget方法来隐藏对象。 但是在Text小部件中,我只能显示并且无法隐藏。 如果我删除子窗口小部件,那么我无法再次显示此子窗口小部件,并显示错误
_tkinter.TclError: bad window path name
我发现唯一的方法是重新创建对象。但它很长并且会发生内存泄漏。
from Tkinter import *
root=Tk()
tx = Text(root)
tx.pack()
bt = Button(tx,text=u'TEST')
tx.window_create(END,window=bt)
# ... How to hide ?
# ... How to show ?
root.mainloop()
这就是为什么我不使用包,网格或位置几何管理器的原因。试试这个例子,调整窗口大小(按钮换行到下一行)。
from Tkinter import *
root=Tk()
tx = Text(root)
tx.pack(expand=YES,fill=BOTH)
for i in range(100):
bt = Button(tx,text=u'TEST %s' % i)
tx.window_create(END,window=bt)
root.mainloop()