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

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

6 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     

    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
  2. Diablo76 Messages postés 344 Date d'inscription   Statut Membre Dernière intervention   140
     

    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
  3. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     

    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
    1. Diablo76 Messages postés 344 Date d'inscription   Statut Membre Dernière intervention   140
       

      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
      1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940 > Diablo76 Messages postés 344 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
  4. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     

    Merci encore !

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

    0
    1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
       

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

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

    Posez votre question
  6. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     

    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
    1. Diablo76 Messages postés 344 Date d'inscription   Statut Membre Dernière intervention   140
       

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

      0
  7. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     

    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