在Python Tkinter中删除标签?
我试图隐藏在这个函数中的一切:在Python Tkinter中删除标签?
def addHome(self):
Label(self, text = "Would you like to add to your to-do list, or generate a random item?", bg="#efefef").grid(row = 3, columnspan = 2, sticky="W")
self.txtHome = Entry(self)
self.btnAddToIt = Button(self, text = "Add To It!", bg="#efefef")
self.btnAddToIt.grid(row = 4, columnspan = 2)
self.btnAddToIt["command"] = self.addToIt
self.btnRandom = Button(self, text = "Random!", bg="#efefef")
self.btnRandom.grid(row = 5, columnspan = 2)
self.btnRandom["command"] = self.addRandom
所以,我可以显示这些功能的东西:
def addToIt(self):
#self.clearMiddle()
Label(self, text = "Add To List").grid(row = 3, columnspan = 2)
self.addInput()
self.btnProcessAdd = Button(self, text = "Add To It!", bg="#efefef")
self.btnProcessAdd.grid(row = 7, column = 0)
self.btnProcessAdd["command"] = self.processAdd
self.btnCancel = Button(self, text = "Cancel", bg="#efefef")
self.btnCancel.grid(row = 7, column = 1)
self.btnCancel["command"] = self.addHome
def addInput(self):
#adds input for add to item page
Label(self, text = "Name of Item:", bg="#efefef", width=50).grid(row=3, column=0)
self.nameOfItem = Entry(self)
self.nameOfItem.grid(row = 3, column = 1)
self.nameOfItem.insert(0, "Be Awesome")
Label(self, text = "Item Category:", bg="#efefef", width=50).grid(row = 4, column = 0, sticky="E")
self.itemCategory = Listbox(self, height = 5)
self.itemCategory.grid(row = 4, column = 1)
self.itemCategory.insert(END, "Fun", "School", "Work", "Exercise", "Other")
Label(self, text = "Other Item Details:", bg="#efefef", width=50).grid(row = 5, column = 0, sticky="E")
self.otherItemDetails = Text(self, width=22, height=3)
self.otherItemDetails.grid(row = 5, column = 1)
Label(self, text = "Due Date (mm/dd/yy):", bg="#efefef", width=50).grid(row = 6, column = 0, sticky="E")
self.dueDate = Entry(self)
self.dueDate.grid(row = 6, column = 1)
self.dueDate.insert(0, "06/19/2013")
然后反之当取消按钮被击中(清除事在addToIt和addInput中)。有什么办法可以做到这一点?
是的,有一些方法。我看到你正在使用grid
。所以,隐藏一个对象使用Object.grid_forget()
。 为了以防万一,如果您使用pack
,您可以按Object.pack_forget()
隐藏对象。同样的事情适用于place
。
我有一些想法,可能会派上用场。我建议你必须要在一个Frame
同时隐藏所有的对象,所以你只需要使用Frame.grid_forget()
代替
Obj1.grid_forget()
Obj2.grid_forget()
Obj3.grid_forget()
.
.
.
请记住,使用这样只会让任何物体隐形,但它仍然存在“内”内存及其所有属性。
我试过把self.txtHome.grid_forget(),但它没有工作。我写错了吗? –
在你发布的例子中,self.txtHome没有布局,即你没有调用grid,这可以解释grid_forget没有做任何事情。 – FabienAndre
@FabienAndre其实网格只是在最后被调用。 –
是否要删除窗口小部件或清除字段中的值? – FabienAndre
你可能会对这个其他线程感兴趣:[在Tkinter有没有什么办法让widget不可见?](http://stackoverflow.com/questions/3819354)(特别是[Bryan的回答](http:// stackoverflow .com/a/5928294)) – FabienAndre
@FabienAndre我想删除小部件。 –