Détection touches clavier : problème 'Shift' + 'touche du pavé numérique'

Signaler
-
Bonjour,

Voila, j'ai 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.

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()


Lorsque j'effectue la série d'évènements suivants :

- 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 ?