我想在点击特定按钮时从界面中删除一个框架。
这是调用的回调函数
def removeMyself(self):
del self
然而,它并没有自行消除。我可能只是在没有更新界面的情况下删除python中的对象?
感谢
更新
self.itemFrame = tk.Frame(parent)
self.itemFrame.pack(expand=False, side=tk.TOP)
removeB = tk.Button(self.itemFrame, text="Remove", width=10, command=self.removeIsosurface)
def removeIsosurface(self):
self.itemFrame.Destroy()
错误讯息:
AttributeError: Frame instance has no attribute 'Destroy'
答案 0 :(得分:14)
要删除,请根据框架是打包还是打磨来调用frm.pack_forget()
或frm.grid_forget()
。
如果您不打算再次使用它,请调用frm.destroy()
,或者当您想再次显示它时保持参考并重新包装或重新编辑。
答案 1 :(得分:2)
del
不会删除任何内容。 del something
只会从本地范围中删除something
。虽然如果something
是对象的唯一引用,它可能允许将来对其进行垃圾回收,甚至不要考虑使用del
来删除对象!!!由于self
只是一个普通变量,del self
什么也不做,除了当然停止方法的其余部分访问实例(所以在方法的最后,它实际上就像{{1} })。
从GUI中删除小部件的确切方法取决于您使用的几何管理器。如果您使用pass
,则可以使用.grid()
。请注意,这仍然不会破坏小部件 - 恰恰相反,您可以再次继续.grid_forget()
它! - 但这没有任何区别。
答案 2 :(得分:0)
不会有这个帮助:self.destroy()
chk this:PY cookbook最后一段
答案 3 :(得分:0)
假设你正在上课。你必须在这里做一些特别的事情:
所以,这是基本原型的样子。
from Tkinter import Tk, Frame, Button, Label
class GUI:
def __init__(self, root):
self.root = root # root is a passed Tk object
self.button = Button(self.root, text="Push me", command=self.removethis)
self.button.pack()
self.frame = Frame(self.root)
self.frame.pack()
self.label = Label(self.frame, text="I'll be destroyed soon!")
self.label.pack()
def removethis(self):
self.frame.destroy()
root = Tk()
window = GUI(root)
root.mainloop()
快乐狩猎!