user2860797
user2860797

Reputation: 193

grid_remove on an Entry widget

Im new to Tkinter and am trying to build a simple GUI using grid manager which upon the push of button1, button2 appears along with an adjacent entry box. If you then press button2 the entry box and button2 dissapear. Below is a slice from the GUI code, the button dissapears but the entry box does not:

import Tkinter
from Tkinter import *


master = Tk()


CreateTestButton = Button(master, text="Create Test", command = CreateTest, fg="red", bg="white",     font="Helvetica 10 bold")
CreateTestButton.grid(column=7, row=1)


def CreateTest():

   TestEntry = Entry(master, text="", width = 100).grid(row=4,columnspan=6)
   Label(self, text="Enter Test Name:").grid(row=3, column=0)

   SaveTestButton = Button(master, text="Save to database", command=saveTest, fg="green", bg="white",    font="Helvetica 10 bold")
   SaveTestButton.grid(row=4, column=5)

   def saveTest():
      SaveTestButton.grid_remove()    
      TestEntry.grid_remove() #ERROR 



mainloop()

How is one to remove entry boxes using grid manager in Tkinter? And other widgets for that matter I will also be needing to remove a list box, labels and widgets uppon a button click or event.

Regards, Daniel

Upvotes: 1

Views: 5220

Answers (1)

falsetru
falsetru

Reputation: 369444

grid return nothing; By executing TestEntry = Entry(..).grid(...), TestEntry become None instead of Entry object.

Replace following line:

TestEntry = Entry(self, text="", width = 100).grid(row=4,columnspan=6)

with:

TestEntry = Entry(self, text="", width = 100)
TestEntry.grid(row=4,columnspan=6)

Complete code

from Tkinter import *

def CreateTest():
    def saveTest():
        SaveTestButton.grid_remove()    
        TestEntry.grid_remove() #ERROR 
    TestEntry = Entry(master, text="", width = 100)
    TestEntry.grid(row=4,columnspan=6)
    Label(master, text="Enter Test Name:").grid(row=3, column=0)
    SaveTestButton = Button(master, text="Save to database", command=saveTest, fg="green", bg="white",    font="Helvetica 10 bold")
    SaveTestButton.grid(row=4, column=5)

master = Tk()
CreateTestButton = Button(master, text="Create Test", command = CreateTest, fg="red", bg="white",     font="Helvetica 10 bold")
CreateTestButton.grid(column=7, row=1)
mainloop()

Upvotes: 3

Related Questions