Partage
  • Partager sur Facebook
  • Partager sur Twitter

Touches du clavier

    22 mars 2015 à 14:51:18

    Bonjour,

    Je suis en train d'apprendre la programmation  (je suis donc un novice) sous Python et pour un algo je souhaite que mon algo attende que j'appuie sur une certaine touche pour qu'il continue. Afin de faire cette action, je suis censé utiliser le module termios! Cependant je n'y arrive pas...
    Est-ce que certains pour m'expliquer comment faire? J'avais un début d'idée avec une boucle infinie (while condition), mais je ne sais pas que mettre dedans...
    Merci d'avance pour vos réponses :)
    • Partager sur Facebook
    • Partager sur Twitter
      22 mars 2015 à 17:32:25

      Bonjour elandure,

      Ton post n'a pas vraiment sa place sur le forum "base de données".

      Je déplace donc celui-ci dans le forum "python" ;)

      • Partager sur Facebook
      • Partager sur Twitter
        22 mars 2015 à 18:05:25

        Salut

        C'est un programme en console ? Tu es sous quel OS, Linux ?

        Après quelques recherches sur le net, il est dit qu'il est plus facile de gérer les événements (appuyer sur une touche est un événement) avec des GUI comme tkinter par exemple. Je te redirigerais donc vers cette méthode.

        http://openclassrooms.com/courses/apprenez-a-programmer-en-python/des-interfaces-graphiques-avec-tkinter

        Les docs les plus poussées sont en anglais désolé : http://effbot.org/tkinterbook/tkinter-index.htm

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          22 mars 2015 à 22:38:20

          En fait, ce que tu veux faire c'est un getch à la C. Il existe des libs sur le net, mais si tu veux un truc rapide, voici :

          try:
          
              # Windows
              from msvcrt import getch
          
          except ImportError:
          
              # Unix
              import termios
              import tty
              import sys
          
          
              def getch():
                  fd = sys.stdin.fileno()
                  attrs = termios.tcgetattr(fd)
                  try:
                      tty.setraw(fd)
                      char = sys.stdin.read(1)
                  finally:
                      termios.tcsetattr(fd, termios.TCSADRAIN, attrs)
                  return char
          
          
          
          # Test :
          if __name__ == '__main__':
          
              import sys
          
              print("Press 'q' to quit...")
              while True:
                  char = getch().decode(sys.stdin.encoding)
                  if char == 'q':
                      break
                  print("Press 'q', not", repr(char), '!')
              print('Goodbye!')
          
          • Ligne 15: On récupère le numéro du descripteur de fichier STDIN.
          • Ligne 16: On sauvegarde la configuration actuelle (les attributs) du flux STDIN.
          • Ligne 18: On change le mode de lecture/écriture du flux (~ECHO et ~ICANON).
          • Ligne 19: Bah... on lit le premier caractère reçu.
          • Ligne 21: Quoiqu'il arrive (finally), on reconfigure le flux STDIN comme il était au début.

          Pour plus d'infos, consulter le man termios. #RTFM

          -
          Edité par Anonyme 22 mars 2015 à 22:40:31

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            22 mars 2015 à 22:54:39

            Avec interface graphique sous tkinter tu peut faire une fonction qui ressemble a ca:

            import sys

            import tkinter

            def clavier(event):

               touche = event.keysim

               if touche == "q":

             .  . sys.exit(0)

            fen = Tk()

            canevas = Canvas(fen,width=100,height=100)

            canevas.bind(<"Key">,clavier)

            canevas.pack()

            fen.mainloop()

            • Partager sur Facebook
            • Partager sur Twitter

            Touches du clavier

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown