2013-06-19 13 views
5

próbuję ukryć wszystko, co w tej funkcji:Usuwanie etykiety w 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 

Tak, że mogę pokazać to, co w tych funkcji:

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") 

Potem na odwrót, gdy przycisk Anuluj jest trafiony (czyszcząc rzeczy w addToIt i addInput). Czy mogę to zrobić?

+0

Czy chcesz usunąć widżety lub wyczyścić wartości w polach? – FabienAndre

+2

Być może zainteresuje Cię ten inny wątek: [W Tkinter jest jakiś sposób uczynienia widżetu niewidocznym?] (Http://stackoverflow.com/questions/3819354) (szczególnie [odpowiedź Bryana] (http: // stackoverflow .com/a/5928294)) – FabienAndre

+0

@FabienAndre Chcę usunąć widżety. –

Odpowiedz

6

Tak, jest jakiś sposób. Widzę, że używasz grid. Aby ukryć obiekt, użyj Object.grid_forget(). Na wszelki wypadek, jeśli używasz pack, możesz ukryć obiekt przez Object.pack_forget(). To samo działa z place.

Mam pomysł, który może się przydać. Polecam, aby mieć wszystkie obiekty, które chcesz ukryć jednocześnie w jednym Frame, więc będzie po prostu użyć Frame.grid_forget() zamiast

Obj1.grid_forget() 
Obj2.grid_forget() 
Obj3.grid_forget() 
. 
. 
. 

Pamiętaj, że za pomocą tego będzie jedynie dowolny obiekt niewidoczny, ale nadal istnieje „wewnątrz” pamięć z wszystkimi jej właściwościami.

+0

Próbowałem umieścić self.txtHome.grid_forget() i nie działało. Czy napisałem to źle? –

+0

W podanym przykładzie, self.txtHome nie jest ułożone, tzn. Nie wywołałeś na nim siatki, to może wyjaśnić, że grid_forget nic nie robi. – FabienAndre

+0

@FabienAndre Właściwie to siatka jest wywoływana, tylko na końcu. –

Powiązane problemy