Entrée au clavier ou entrée au pavé numérique ?

Résolu
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   -  
Phil_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

A voir également:

6 réponses

mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 

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

1
Diablo76 Messages postés 244 Date d'inscription   Statut Membre Dernière intervention   77
 

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)
0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

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 

0
Diablo76 Messages postés 244 Date d'inscription   Statut Membre Dernière intervention   77
 

Pour info, dans mon exemple ci-dessus les keycodes sont pour Mac

Par contre, sous Windows, ils n'ont pas les mêmes valeurs :-(

0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 878 > Diablo76 Messages postés 244 Date d'inscription   Statut Membre Dernière intervention  
 

Note que le gist que je pointais dans #1 donne aussi les codes touches Windows dont tu pourrais avoir besoin.

0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

Merci encore !

(ou alors, il faut que je m'achète un Mac en plus de mon PC Windows :-)  :-) )

0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 

Est-ce que ton problème est résolu ? Si oui, peux-tu le marquer comme tel (voir ici) ?

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

Bonjour Mamiemando,

Oui, j'y pensais, j'attendais simplement la réponse de mon ami qui a un Mac

Je lui ai envoyé un mail avec un zip contenant un bout de code pour tester

(on est éloignés géographiquement)

0
Diablo76 Messages postés 244 Date d'inscription   Statut Membre Dernière intervention   77
 

Tu aurais pu poster ton bout de code ici :-)

0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

Bonjour Diablo,

Mais oui, quel ballot !

C'est vrai que tu avais déjà résolu mon problème de position

des widgets en fonction de Windows ou MacOS

0