TkInter keypress, keyrelease events

Я понял, что события нажатия клавиш и keyrelease Tk должны были срабатывать только при нажатии или отпускании клавиши?

Однако со следующим простым кодом, если я удерживаю клавишу «a», я получаю непрерывную последовательность чередующихся событий нажатия клавиш / keyrelease.

Я что-то делаю неправильно, или TkInter багги? Это Python2.7 на Linux mint.

from Tkinter import * def keyup(e): print 'up', e.char def keydown(e): print 'down', e.char root = Tk() frame = Frame(root, width=100, height=100) frame.bind("<KeyPress>", keydown) frame.bind("<KeyRelease>", keyup) frame.pack() frame.focus_set() root.mainloop() 

Выход при нажатии и удержании «a»:

 down a up a down a up a down a up a down a up a etc... 

2 Solutions collect form web for “TkInter keypress, keyrelease events”

Еще какое-то исследование нашло это полезное сообщение, которое показывает, что это происходит из-за поведения автоповторя X. Вы можете отключить это, используя

 os.system('xset r off') 

а затем перезагрузите его, используя «on» в конце вашего скрипта. Проблема в том, что это глобальное поведение, а не только мой сценарий, который не очень велик, поэтому я надеюсь, что кто-то может придумать лучший способ.

Поведение автоповтора зависит от системы. В Win7,

 down a down a down a ... down a up a 

Это меньше секунды.

  • Возможно ли запустить только один шаг цикла событий asyncio
  • Как заставить Tkinter работать с mac
  • При сохранении графики черепахи в .eps-файле цвет фона отображается на экране, но не сохраняется в файле .eps
  • Сделать Tkinter Toplevel активным
  • Использование переменной from entry / button в другой функции в Tkinter
  • Когда мне нужно вызвать mainloop в приложении Tkinter?
  • python tkinter: определение горизонтальной прокрутки на сенсорной панели
  • Код ввода клавиши со стрелкой не работает в tkinter
  • Незакрываемое окно с использованием tkinter
  • перенаправить stdout в текстовый виджет tkinter
  • PySide / PyQt обнаруживает, если пользователь пытается закрыть окно
  • Python - лучший язык программирования в мире.