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 

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

  • Выбор файла в Python3
  • Как сделать кнопку с помощью виджета tkinter Canvas?
  • Как закрыть окно Tkinter нажатием кнопки?
  • Создание окон Tkinter на панели задач
  • Как я могу идентифицировать кнопки, созданные в цикле?
  • Ввод данных от пользователя в Tkinter
  • Python ImportError: невозможно импортировать имя «_imagingtk» в virtualenv
  • Как привязать нажатие кнопки к кнопке в Tkinter
  •  
    Interesting Posts for Van-Lav

    Разница между exit () и sys.exit () в Python

    Как присоединиться к двум генераторам в Python?

    python sqlAlchemy: получил InvalidRequestError после местоположения класса изменений

    флажок-кеш memoize параметры строки запроса URL-адреса также

    Сопоставление значений столбцов в Pandas DataFrame со значениями «NaN»

    Как загрузить файл с S3 с помощью boto только в том случае, если удаленный файл является более новым, чем локальная?

    Игнорировать часть кортежа python

    Django получает количество фотографий в галерее рядом с названием галереи

    эффективно находить интервал с не-нулями в scipy / numpy в Python?

    Переключение между python 2.7 и python 3.5 в Mac OS X

    как изменить цвет кнопки bg после нажатия и вернуться к предыдущему цвету

    фильтровать теги django-taggit в Queryset Django

    постоянно проверять список и делать что-либо, если в списке есть элементы

    Непоследовательный Anaconda root env после неудачного обновления Python 3.5

    assertRaises в модуле python не тестирует исключение

    Python - лучший язык программирования в мире.