В моем классе CS мои ученики только что завершили свой первый конкурс «Клонировать ваш классический». Команда PONG
быстро справилась с проблемой «Эй, моя ракетка зависла» с двумя игроками на одной версии клавиатуры. Я столкнулся с этой проблемой 5 лет назад и обнаружил: Привязка Python — позволяет одновременно нажимать несколько клавиш, что меня просветило (осторожно! В статье используется python2.7). Но тогда я не понимал, что скрипт работает только на Windows-машинах.
В системе Linux событие <KeyRelease-a>
запускает обратный вызов, но event.char
затем указывает на ' ', а не на 'a', как можно было бы ожидать. Я пытался погуглить, но даже на stackoverflow
ничего интересного не нашел.
Любые подсказки? Затем найдите воспроизводимый пример кода:
import os
from tkinter import *
os.system("xset r off")
def keyup(e):
#print(f"up {e.char}")
print(f"up {e.keysym}")
def keydown(e):
#print(f"down {e.char}")
print(f"down {e.keysym}")
root = Tk()
frame = Frame(root, width=100, height=100)
frame.bind("<KeyPress>", keydown)
frame.bind("<KeyRelease>", keyup)
frame.pack()
frame.focus_set()
root.mainloop()
os.system("xset r on")
для воспроизводимости, как спросил Брайан, которого я благодарю за его беспокойство по поводу моего вопроса.
e.keysym
? они используют keysym в официальном tcl документация. - person Atlas435   schedule 29.11.2020