Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 2, 2018 16:08:50

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

[Tkinter] entry,get не возвращает актуальное значение

Посмотрите, пожалуйста, код ниже. Я хочу при наборе текста в 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()

Офлайн

#2 Июнь 2, 2018 17:04:53

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

[Tkinter] entry,get не возвращает актуальное значение

vanvanov
при привязке к “<Key>” теряется первый набираемый символ
Так и должно быть: когда вы нажимаете на клавишу, окошко ввода ещё пустое, а событие уже срабатывает, а после события происходит запись символа. Чтобы событие срабатывало после записи символа нужно использовать KeyRelease:
 entry.bind('<KeyRelease>',get)

Офлайн

#3 Июнь 2, 2018 21:22:29

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

[Tkinter] entry,get не возвращает актуальное значение

rami
Спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version