IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Double valeur keyboard


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Apprenti dev Python
    Inscrit en
    Août 2021
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Apprenti dev Python

    Informations forums :
    Inscription : Août 2021
    Messages : 69
    Par défaut Double valeur keyboard
    Bonjour,
    J'ai un un problème avec le keyboard, pour chaque touche que je presse il réagi comme si je la pressais deux fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from keyboard import read_key , is_pressed
    while True:
        touche = read_key()
        print(touche)
    Et j'obtient le résultat suivant
    Je voudrais savoir si c'st possible de l'afficher une seule fois.

    Merci par avance de votre réponse
    Dymon

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut !

    Une soluce :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import keyboard
     
    def keys(k):
        print(k)
     
    keyboard.on_press(keys)
    Après j'aime bien utilisé pynput pour ma part...

  3. #3
    Membre confirmé
    Homme Profil pro
    Apprenti dev Python
    Inscrit en
    Août 2021
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Apprenti dev Python

    Informations forums :
    Inscription : Août 2021
    Messages : 69
    Par défaut
    Bonjour,
    Merci pour votre réponse rapide mais je ne comprend pas à quoi correspond le "k"
    Dymon

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par dymon2021 Voir le message
    je ne comprend pas à quoi correspond le "k"
    Ah ben il serait grandement temps que tu ouvres un tuto !!! Là tu apprendrais les fonctions, les paramètres, etc etc...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre confirmé
    Homme Profil pro
    Apprenti dev Python
    Inscrit en
    Août 2021
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Apprenti dev Python

    Informations forums :
    Inscription : Août 2021
    Messages : 69
    Par défaut
    Bonjour,
    Vous n'êtes pas obligé de vous énerver...
    Le k fait référence au Keys mais à quoi correspond ce dernier ?

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dymon2021 Voir le message
    Vous n'êtes pas obligé de vous énerver...
    Ah mais c'est dit sans énervement. Je te dis calmement qu'il serait temps que tu ouvres un tutoriel pour pouvoir acquérir le minimum du minimum. C'est d'ailleurs écrit dans les règles
    Vous êtes le bienvenu ici pour vous former.
    Vous former, cela veut dire lire les cours et tutoriels
    => http://club.developpez.com/regles/#LIV-N

    Maintenant si c'est juste "k" qui te gêne, ça peut s'arranger (et sans énervement)

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import keyboard
     
    def keys(toto):
        print(toto)
     
    keyboard.on_press(keys)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Invité
    Invité(e)
    Par défaut
    Faut dire que la doc n'est pas ouf sur ce module :
    https://github.com/boppreh/keyboard#keyboard.on_press

  8. #8
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Bonjour,

    Citation Envoyé par LeNarvalo Voir le message
    Salut !

    Une soluce :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import keyboard
     
    def keys(k):
        print(k)
     
    keyboard.on_press(keys)
    Après j'aime bien utilisé pynput pour ma part...
    Citation Envoyé par dymon2021 Voir le message
    Bonjour,
    Merci pour votre réponse rapide mais je ne comprend pas à quoi correspond le "k"
    Dymon
    k correspond à l'évènement transmis au callback (touche pressée).
    Une écriture plus explicite serait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import keyboard
     
    def mycallback(event):
        print(event)
     
    keyboard.on_press(mycallback)
    Ceci étant dit, je viens d'essayer la proposition de @LeNarvalo et elle ne fonctionne pas telle quelle sur mon Pc. (Il doit y manquer une boucle infinie, faudrait se pencher sur la doc, mais perso je n'en ai pas envie).
    D'autre part, je constate qu'avec linux il faut exécuter le script en root . Rien que pour ça, je n'utiliserais pas cette lib.

  9. #9
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 212
    Par défaut
    Hello,
    Citation Envoyé par Hominidé Voir le message
    D'autre part, je constate qu'avec linux il faut exécuter le script en root . Rien que pour ça, je n'utiliserais pas cette lib.
    la bibliothèque pynput n'a pas ce problème en ce qui concerne le clavier.
    Voici un programme qui lit les touches appuyées jusqu'à l'appui sur la touche esc :
    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
    from pynput import keyboard
     
     
    def on_press(key):
        try:
            print('\ntouche alphanumérique {0} appuyée'.format(
                key.char))
        except AttributeError:
            print('touche spéciale {0} appuyée'.format(
                key))
     
     
    def on_release(key):
        print('touche relâchée : {0}'.format(
            key))
        if key == keyboard.Key.esc:
            # On arrête le "Listener" sur touche esc appuyée
            return False
     
     
    # Récupérer les événements de clavier jusqu'à l'arrêt du "Listener"
    with keyboard.Listener(
            on_press=on_press,
            on_release=on_release) as listener:
        listener.join()
    et voici ce que cela donne comme genre de résultat :
    z
    touche alphanumérique z appuyée
    touche relâchée : 'z'
    e
    touche alphanumérique e appuyée
    touche relâchée : 'e'
    touche spéciale Key.ctrl_l appuyée
    touche spéciale Key.alt_gr appuyée
    touche relâchée : Key.ctrl_l
    touche relâchée : Key.alt_gr
    touche spéciale Key.esc appuyée
    touche relâchée : Key.esc
    J'ai testé ce programme sous Windows 10 et Ubuntu 20.04

    Ami calmant, J.P

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Ceci étant dit, je viens d'essayer la proposition de @LeNarvalo et elle ne fonctionne pas telle quelle sur mon Pc. (Il doit y manquer une boucle infinie, faudrait se pencher sur la doc, mais perso je n'en ai pas envie).
    Oui, suffit de rajouter while True: pass en fin de code et ça marche.

    Citation Envoyé par Hominidé Voir le message
    D'autre part, je constate qu'avec linux il faut exécuter le script en root . Rien que pour ça, je n'utiliserais pas cette lib.
    Effectivement, c'est gênant (et ils ne disent pas pourquoi).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Oui, suffit de rajouter while True: pass en fin de code et ça marche.
    Ce qui bouffera 100% du CPU.... ajouter keyboard.wait() serait plus judicieux (et est documenté).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  12. #12
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Ce qui bouffera 100% du CPU.... ajouter keyboard.wait() serait plus judicieux
    Ouais, pardon. C'est quand j'ai voulu tester rapidement le code de LeNarvalo pour voir ce que ça faisait je suis allé au plus vite. Evidemment en production réelle il ne faut pas passer par une boucle while True.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Evidemment en production réelle il ne faut pas passer par une boucle while True.
    C'est pas le "while True" qui pose problème mais le block d'instructions qui se réduit à "pass" derrière: un time.sleep(1000) conviendrait.

    Citation Envoyé par Sve@r Voir le message
    C'est quand j'ai voulu tester rapidement le code de LeNarvalo pour voir ce que ça faisait je suis allé au plus vite.
    Un code du Narvalo est souvent pondu rapidement... et derrière, ça rame pour comprendre ce que ça fait, pourquoi ça ne le fait pas,...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  14. #14
    Invité
    Invité(e)
    Par défaut


    IDLE gère ça assez bien, j'ai pas testé plus loin...

    Mais en effet il vaut mieux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import keyboard
     
    def keys(k):
        print(k)
     
    keyboard.on_press(keys)
    keyboard.wait("ESC") #par exemple
    keyboard.unhook_all()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Parcourir Json à double valeurs
    Par bonjourajax dans le forum jQuery
    Réponses: 2
    Dernier message: 21/04/2018, 19h50
  2. Réponses: 2
    Dernier message: 23/10/2014, 11h16
  3. comparaison de doubles, valeur absolue et perf
    Par ppaul128 dans le forum C++
    Réponses: 10
    Dernier message: 19/05/2008, 14h14
  4. [CR 10][VB.NET] Crystal double les valeurs à afficher :'(
    Par nanou_toulouse dans le forum SDK
    Réponses: 2
    Dernier message: 02/03/2005, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo