Почему вызов entry.get () дает мне «недопустимое имя команды»?

Это мой код:

def ask(what,why): root=Tk() root.title(why) label=Label(root,text=what) label.pack() entry=Entry(root) entry.pack() button=Button(root,text='OK',command=root.destroy) button.pack() root.mainloop() return entry.get() 

И когда я вызываю код:

  • Python tkinter - как удалить все дочерние элементы?
  • Переменные между классами для масштабирования в графическом интерфейсе PyQt
  • Python / Tkinter: Включить / выключить обновления экрана, такие как wxPython Freeze / Thaw?
  • Интерактивная визуализация графа
  • Как добавить изображение в Tkinter (Python 2.7)
  • Как создать таймер с помощью tkinter?
  •  print(ask('Name:','Hello!')) 

    Я получил:

     Traceback (most recent call last): File "C:\gui.py", line 16, in <module> ask('Name:','Hello!') File "C:\gui.py", line 15, in ask return entry.get() File "C:\Python34\lib\tkinter\__init__.py", line 2520, in get return self.tk.call(self._w, 'get') _tkinter.TclError: invalid command name ".48148176" 

    Я использую Python 3.4.3 на 32-разрядной Windows 7.

  • Код Python для получения текущей функции в переменную?
  • Цвет линии 3D-параметрической кривой в matplotlib.pyplot на python
  • Запросы дросселирования с несколькими прокси-серверами
  • Ошибка при попытке перегрузить оператор «/»
  • Получение UTC UTC в Python
  • Использование оператора AND и NOT в Python
  • One Solution collect form web for “Почему вызов entry.get () дает мне «недопустимое имя команды»?”

    Когда вы нажимаете кнопку, приложение уничтожается, mainloop заканчивается, и вы пытаетесь вернуть содержимое виджета Entry в приложении, которое было уничтожено. Перед уничтожением приложения необходимо сохранить содержимое entry . Вместо того, чтобы взломать ваш путь через это, было бы гораздо лучше настроить приложение Tkinter надлежащим образом, например, с объектно-ориентированным подходом.

     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() 
    Python - лучший язык программирования в мире.