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 :

Attente d'une touche


Sujet :

Python

  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut Attente d'une touche
    Bonjour,

    je suis en train d'ecrire un programme qui dessine un fractale pas a pas et je voudrais qu'il s'arrete entre chaque etape en attendant que le l'utiliseur ait presse une certaine touche, espace ou n (next).
    J'ai essaye avec getch() mais ca ne fonctionne pas, ou je ne sais pas m'en servir.
    Pourriez vous m'aider s'il vous plait ?

    D'avance merci.

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir,

    Si vous 'dessinez' c'est que vous utilisez un GUI: Tous les GUI ont un gestionnaire d’événement qui gère la saisie clavier. Merci de préciser le votre pour avoir une réponse

    @+

    Edit: Et pensez a poster dans le sous forum du GUI en question pour avoir des réponses rapides.

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut
    Pardon pour le manque de precision, je dessine avec le module Turtle.

    Merci pour votre reponse.

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    turtle.onkey(function, key)
    function: La fonction à utiliser
    key: La touche ('n') ou le symbole ('space')

  5. #5
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut
    En fait j'ai 6 etapes dans mon programme et a chaque etape je veux que le programme attende que l'utilisateur ait presse la touche 'n'.

    Grace a vos indications j'ai ecrit ca :

    def suivant():
    n=n+1

    # debut programme
    ...
    #fin de la premiere etape

    n=1
    while n<2:
    onkey(suivant,'n')

    # debut de la deuxieme etape
    ....

    Mais le programme reste bloque dans ma boucle while/onkey


    Pourriez vous m'aider encore s'il vous plait ?

  6. #6
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Citation Envoyé par Tchaé Voir le message
    def suivant():
    n=n+1
    Ici n est une variable locale de suivant, dans le while n reste à 1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def suivant():
        global n
        n += 1

  7. #7
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut
    Merci mais ca ne fonctionne toujours pas, effectivement la variable n consideree comme globale est bien modifiee par la fonction suivant, le probleme c'est si j'ecrit onkey(suivant,'n') la fonction suivant n'est jamais appelee quel que soit la touche que j'appuie tandis que si j'ecris onkey(suivant(),'n') la fonction suivant est immediatement appelee que j'appuie sur n'importe quelle touche ou aucune (j'ai teste avec des print aux deux endroits).

    Je suis un peu desespere, je pensais que c'etait une routine assez classique en programmation...

  8. #8
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir,

    Sans doute que while n'est pas une bonne idée.
    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
    from turtle import *
     
    clear()
    speed(1)
    shape('turtle')
    bgcolor('black')
    width(1)
     
    def suivant():
        left(90)
        color('red')
        forward(200)
     
    onkey(suivant, "n")
    onkey(suivant, "space")
    listen()
    exitonclick()

  9. #9
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut
    Voila ce que j'ai fait finalement, grace a vos conseils (je ne sais pas comment taper du code dans ces messages donc je perds les indentations):

    n=1
    def suivant():
    global n
    n=n+1

    #Debut du programme
    #Etape 1

    onkey(suivant,'space')
    listen()
    while n<2:
    color('blue') #je dois changer de couleur a chaque etape

    #Suite du programme
    #Etape 2
    ...

    Et ca fonctionne !
    Donc un grand merci a vous.

  10. #10
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    C'est bien si vous arrivez à votre but: Pensez à la balise 'résolu'
    Pour le code c'est la balise code (# en haut du message)

    @+ et bon code

  11. #11
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut
    Voila, je vais cliquer sur resolu, une derniere question : ou dois je poster pour des problemes specifiques a Turtle et y a t il un autre module graphique simple et plus performant que Turtle, c'est tres lent ?
    Un module graphique ou je pourrais directement adresser des points du plan plutot que de faire avancer une tortue ?

  12. #12
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Et bien le Canvas de Tkinter me semble bien pour cela.
    Il existe bien des modules plus 'mathématiques' mais c'est plus dur a appréhender.
    Sinon les questions sur turtle sont d'habitude sur le forum général.

  13. #13
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 065
    Par défaut
    Je pense aussi à matplotlib, numpy, etc...

  14. #14
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Je pense aussi à matplotlib, numpy, etc...
    Citation Envoyé par PauseKawa Voir le message
    Il existe bien des modules plus 'mathématiques' mais c'est plus dur a appréhender.
    Oui, sans doute

  15. #15
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut
    J'utilise IDLE sous windows vista et quand je commence un programme par from Tkinter import* j'ai le message d'erreur : no module name Tkinter.

    J'ai beau chercher sur internet je ne trouve pas d'explication, si vous poviez m'aider encore un peu...

  16. #16
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Et bien sous Python 3.x le module se nomme tkinter.
    from tkinter import *

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

Discussions similaires

  1. Faire une action en attente d'une touche
    Par utoria dans le forum Assembleur
    Réponses: 1
    Dernier message: 15/03/2007, 11h38
  2. [Applet]simuler une touche clavier
    Par mat10000 dans le forum Interfaces Graphiques en Java
    Réponses: 19
    Dernier message: 12/12/2003, 16h23
  3. Comment détecter la frappe d'une touche ?
    Par Bubonik software dans le forum C
    Réponses: 17
    Dernier message: 11/12/2003, 21h52
  4. [Turbo Pascal] Lire une touche au clavier sans interrompre le programme
    Par Allelouia dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 29/03/2003, 22h31
  5. faire de la touche F1 une touche de raccourci?
    Par sb dans le forum Composants VCL
    Réponses: 3
    Dernier message: 06/08/2002, 10h11

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