Skip to content Skip to sidebar Skip to footer

Why Does Calling Entry.get() Give Me "invalid Command Name"?

This is my code: def ask(what,why): root=Tk() root.title(why) label=Label(root,text=what) label.pack() entry=Entry(root) entry.pack() button=Button(root

Solution 1:

When you press the button, the application is destroyed, the mainloop ends, and you try to return the contents of an Entry widget... in an application that was destroyed. You need to save the contents of entry before destroying the application. Instead of hacking your way through this, it would be much better to set up a Tkinter application in the proper way, such as with an object-oriented approach.

class App:
    # 'what' and 'why' should probably be fetched in a different way, suitable to the app
    def __init__(self, parent, what, why):
        self.parent = parent
        self.parent.title(why)
        self.label = Label(self.parent, text=what)
        self.label.pack()
        self.entry = Entry(self.parent)
        self.entry.pack()
        self.button = Button(parent, text='OK', command=self.use_entry)
        self.button.pack()
    def use_entry(self):
        contents = self.entry.get()
        # do stuff with contents
        self.parent.destroy() # if you must

root = Tk()
app = App(root, what, why)
root.mainloop()

Post a Comment for "Why Does Calling Entry.get() Give Me "invalid Command Name"?"