Entrée au clavier ou entrée au pavé numérique ?
RésoluPhil_1857 Messages postés 1872 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai développé une petite application Tkinter qui contient le code suivant:
e1 = Entry(f1, width=5, font=font_default) e1.place(x=65, y=4 + offset_entry_y) e1.bind("<Return>", calculation)
... qui permet de saisir un entier dans une entry box, puis de déclencher une action en appuyant sur la touche entrée.
Cela fonctionne, que l'on appuie sur la touche du clavier ou bien sur celle du pavé numérique.
Par contre, j'ai passé mon code à un ami qui possède un Mac, et ça ne fonctionne pas avec la touche du pavé numérique, mais uniquement avec celle du clavier.
Serait-ce un bug de son Mac en particulier, ou bien quelque chose lié à Python ?
Merci d'avance pour vos réponses
Windows / Edge 119.0.0.0
- Entrée au clavier ou entrée au pavé numérique ?
- Télécharger clavier arabe - Télécharger - Divers Web & Internet
- Pavé numérique bloqué - Guide
- Verrouillage numérique PC portable : débloquer le clavier - Guide
- Clavier numérique iphone - Guide
- Comment taper / sur clavier - Guide
6 réponses
Bonjour,
Je pense que c'est plus lié à l'implémentation de tkinter sous MacOS. Selon cette discussion, les événements claviers des pavés numériques ne sont correctement pris en charge que sous Linux. Voir aussi le gist correspondant. Au pire du pire, tu peux rattraper l'événement <KeyPress> (comme dans le gist) et faire un test sur le code de la touche.
Note aussi qu'il existe d'autres frameworks (GTK, Qt) qui se veulent portables d'un système d'exploitation, à l'autre. Peut-être qu'une solution serait d'opter pour une de ces solutions au lieu de tkinter.
Bonne chance
Salut,
@mamiemando a raison, c'est bien tkinter, de plus même sous Windows on ne devrait pas pouvoir avoir le même bind pour la touche Enter du clavier et celle du pavé, car elles ont 2 keycodes différents, on devrait pouvoir avoir le choix.
Avec PyQt c'est :
# Keycode pour le clavier
Qt.Key_Return
# Keycode pour le pavé
Qt.Key_Enter
Du coup avec le lien de @mamiemando, je supprimerais ton bind pour:
def keypress(event): if event.keycode in [1275068419, 603979789]: calculation() # # # el.bind("<KeyPress>", keypress)
Bonjour à tous les deux,
Et merci pour vos réponses
Effectivement, je vais essayer l'évènement KeyPress
Et, bien entendu, Tkinter était une solution de facilité, étant livré à l'install
de Python, mais je devrais peut-être me mettre à Qt, pour une interface
moderne et des widgets plus avancés
Merci encore !
(ou alors, il faut que je m'achète un Mac en plus de mon PC Windows :-) :-) )
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question