évènements clavier [Résolu]

Signaler
Messages postés
2
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
10 novembre 2010
-
 LeGentleMan -
Bonjour,

Je fais un petit programme de reconnaissance par dynamique de frappe, et pour commencer il me faut récupérer les temps de pression de chaque touche ainsi que les temps de latence entre deux touches consécutives (différence entre le temps de début de pression de la première touche et le temps de début de pression de la deuxième).
J'utilise le langage python (version 2.6) avec le module Tkinter pour simuler une fenêtre de connexion (un truc basique : deux Label suivis de deux Entry, pour le login et le mot de passe). Pour le moment je récupère juste le temps de début de pression avec un bind sur les Entry, et j'aimerais savoir comment récupérer le temps du moment où l'utilisateur relâche la touche. Si quelqu'un a une idée je suis toute ouïe.

(petite note au cas où : je travaille avec ubuntu)

Merci,

Naj

2 réponses

Messages postés
97
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
7 décembre 2018
47
Bonjour,
Voici une piste:
# -*- coding: ISO-8859-15 -*-
from Tkinter import *

flag = True

#L'appui prolongé sur une touche du clavier appelle plusieurs fois l'évenement
#La variable "flag" permet d'intercepter le 1er évenement
def appui(event):
    global flag, temps

    if flag:
        temps = event.time
        flag = False
        print "appui   time=",event.time,"touche=",event.keysym

def relache(event):
    global flag, temps
    print "relache time=",event.time
    print "duree =", event.time - temps
    flag = True


Ecran = Tk()
Ecran.bind("<KeyPress>", appui)
Ecran.bind("<KeyRelease>", relache)
Ecran.mainloop()


Important:
Pour faire le test il faut que la fenêtre/TkInter ait le focus sinon les évènements clavier ne sont pas interceptés.
Merci pour la technique, c'est cool à toi !
Messages postés
2
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
10 novembre 2010

Merci beaucoup, c'est exactement ce qu'il me fallait.

Juste une dernière question sur le sujet : le temps est donné avec quelle précision? (j'utilisais clock() mais c'était à la seconde près, j'avais des calculs de temps nuls, là j'ai des résultats satisfaisants , merci)