Форум сайта python.su
4
Посмотрите, пожалуйста, код ниже. Я хочу при наборе текста в tk.Entry сразу же считать актуальное значение. Получается так, что при клике на кнопке это получается, а при привязке к “<Key>” теряется первый набираемый символ. Но мне нужно сразу же считать значение, а не при клике на кнопку. В чем проблема?
#!/usr/bin/python3 import tkinter as tk def get(event=None): print('Text: "%s"' % str(entry.get())) root = tk.Tk() entry = tk.Entry(root) entry.pack() entry.focus_set() #entry.bind('<Key>',get) button = tk.Button (master = root ,text = 'Get' ) button.pack() button.bind('<ButtonRelease-1>',get) root.wait_window() root.mainloop()
Офлайн
72
vanvanovТак и должно быть: когда вы нажимаете на клавишу, окошко ввода ещё пустое, а событие уже срабатывает, а после события происходит запись символа. Чтобы событие срабатывало после записи символа нужно использовать KeyRelease:
при привязке к “<Key>” теряется первый набираемый символ
entry.bind('<KeyRelease>',get)
Офлайн
4
rami
Спасибо!
Офлайн