Сделать событие после ввода текста - PullRequest
0 голосов
/ 04 июня 2009

Я использую tkinter в Python и хотел бы добавить событие в виджет Entry. Я хотел бы дождаться ввода текста в него, а затем выполнить действие при вводе текста.

что-то с эффектом:

self.entry(command=self.event)

есть ли вообще это сделать?

1 Ответ

1 голос
/ 08 июня 2009

Вы не указали, как вы решили, что пользователь закончил печатать. Вы можете:

  • Использовать тайм-аут - проверить, сколько времени прошло между двумя буквами и обработать ввод, если задержка превышает, скажем, 3 секунды. Вашему обычному пользователю не понравится это решение, но может показаться, что это то, что вам нужно. Способ сделать это:

    1. «определить» ваш StringVar: s = Tkinter.StringVar(root)
    2. назначить обратный вызов для записи в ваш StringVar: s.trace('w', handle_input)
    3. обрабатывает проверку задержки и полезный код в handle_input callback
    4. при создании виджета Entry, передайте StringVar как текстовую переменную: e = Tkinter.Entry(root, textvariable=s)
  • Используйте клавишу ввода, когда закончите ввод - привязать "<Enter>" событие к виджету ввода:

    e.bind('<Enter>', handle_input)
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...