2015-04-20 5 views
0

Я хотел бы спросить кое-что, что я думаю, что это может быть очень просто, но я не могу это получить!Ввод виджета Tkinter. Я запутался

Я использую tkinter в python, и я пытаюсь создать запись. Текст этой записи должен храниться в переменной (я называл ее «s»). НО, я хочу также, чтобы этот виджет работал динамично. Например. Я запускаю программу, я ввожу какой-то текст с клавиатуры, и он хранится в «s», затем я хочу представить что-то другое, и теперь то, что хранит переменная «s», - это новый введенный текст, а не старый. Я написал этот код, но моя переменная s всегда сохраняет исходный текст.

root = Tk() 
root.geometry("250x250") 

e = Entry(root) 
e.pack() 

e.delete(0, END) 
e.insert(0, "a default value") 
s = e.get() 

print s 
root.mainloop() 

Чтобы ввести текст, нужно ли его записать в поле, а затем нажать Enter? Большое спасибо Pablo

ответ

0

Текст вводится во время mainlop. Используйте обратный вызов (например, с помощью виджета Button), чтобы получить текст.

Например, вот обратный вызов с помощью Button:

from tkinter import * 

def print_input(entry): 
    print entry.get() 

root = Tk() 
root.geometry("250x250") 
e = Entry(root) 
e.pack() 

b = Button(root, text="Print my input", command=lambda e=e: print_input(e)) 
b.pack() 

root.mainloop() 

Вы также можете связать <return> ключ для всех ваших окна, используя следующую строку:

def func(event): 
    print("You hit return.") 
root.bind('<Return>', func) 

Вот некоторые интересные способов для этого: Can't figure out how to bind the enter key to a function in tkinter

Смежные вопросы