Я пытаюсь использовать виджет Entry Tkinter. Я не могу заставить его сделать что-то очень основное: верните введенное значение.
Кто-нибудь есть идеи, почему такой простой скрипт ничего не вернет? Я пробовал множество комбинаций и смотрел на разные идеи.
Этот скрипт работает, но не печатает запись:Python Tkinter Entry get()
from Tkinter import *
root = Tk()
E1 = Entry(root)
E1.pack()
entry = E1.get()
root.mainloop()
print "Entered text:", entry
Кажется так просто.
Редактировать: Если кто-то еще сталкивается с этой проблемой и не понимает, вот что в итоге работает для меня. Я добавил кнопку в окно ввода. Команда кнопки закрывает окно и выполняет функцию get():
from Tkinter import *
def close_window():
global entry
entry = E.get()
root.destroy()
root = Tk()
E = tk.Entry(root)
E.pack(anchor = CENTER)
B = Button(root, text = "OK", command = close_window)
B.pack(anchor = S)
root.mainloop()
И это вернуло желаемое значение.
'получить()' вызывается перед любой текст вводится. Поэтому 'entry' - пустая строка (измените' entry' на 'repr (entry)' в последней строке, и вы увидите это). Если вы хотите вызвать 'get()', когда вводится какой-либо текст (вы, вероятно, это делаете), вам нужно связать 'get()' с событием. – gil
И 'print' не произойдет, потому что перед ним есть бесконечный цикл (' root.mainloop() '). – TigerhawkT3