Bonjour,
J'ai encore un problème avec la détection d'une touche du clavier concernant les touches du pavé numérique associées à la touche 'Shift' pour le code ci-dessous.
Lorsque j'effectue la série d'évènements suivants :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 from tkinter import * flag = 'abc' #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 flagTest = event.keysym if flag != flagTest: flag = flagTest print ("appui : touche=",event.keysym) return 'break' def Relache(event): global flag, temps print ("relache : touche=",event.keysym) print('') flag = 'abc' Ecran = Tk() Ecran.bind("<KeyPress>", Appui) Ecran.bind("<KeyRelease>", Relache) Ecran.mainloop()
- appui sur 'Shift' (appui maintenu sur'Shift')
- appui sur 'k' (en maintenant l'appui sur 'Shift')
- relache de 'k' (en maintenant l'appui sur 'Shift')
- relache de 'Shift'
alors le code renvoie, de façon logique, les résultats :
appui : touche= Shift_L
appui : touche= K
relache : touche= K
relache : touche= Shift_L
Cependant, Lorsque j'effectue la même série d'évènements (mais en remplaçant 'k' par '3') :
- appui sur 'Shift' (appui maintenu sur'Shift')
- appui sur '3' du pavé numérique (en maintenant l'appui sur 'Shift')
- relache de '3' du pavé numérique (en maintenant l'appui sur 'Shift')
- relache de 'Shift'
alors, voici les résultats que retourne le code :
appui : touche= Shift_L
relache : touche= Shift_L
appui : touche= Next
relache : touche= Next
appui : touche= Shift_L
relache : touche= Shift_L
Le problème rencontré est le suivant : pourquoi, tout en maintenant le 'Shift', le fait d'enfoncer la touche '3' (du pavé) entraîne comme résultat (immédiatement après) la 'relache de la touche Shift' et non la détection de l'appui sur la touche '3' ? et comment peut-on faire en sorte que ce soit la touche '3' qui soit repérée en appui plutôt que la touche 'Shift' en relache ?
Auriez-vous une idée de ce qu'il se passe et comment y remédier ?
Partager