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 :

mise en pause d'un programme sans la phrase "appuyer sur une touche pour continuer.."


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Points : 0
    Points
    0
    Par défaut mise en pause d'un programme sans la phrase "appuyer sur une touche pour continuer.."
    Bonjour, je débute python et je me demandais : Pour faire une pause dans mes programmes, j'utilise "os.system("pause")" mais cela m'affiche la phrase "appuyer sur une touche pour continuer..."
    Est il possible de mettre en pause mon programme sans qu'une phrase s'affiche (ou alors que qqchose de plus discret s'affiche) ? et si oui, comment ?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 343
    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 343
    Points : 36 864
    Points
    36 864
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Python 3.3.2 (default, Sep 16 2013, 23:11:39) [MSC v.1600 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> input('Hit <Return> to continue')
    Hit <Return> to continue
    ''
    >>>
    programmer, c'est souvent adapter/détourner des fonctionnalités utilisées dans un autre contexte.

    - W

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    avec cette methode, si le mec qui utilise mon programme appuie sur une autre touche que entrée, ça ne va pas le faire.

    n'y a t il pas un moyen de faire une pause jusqu'a ce que l'utilisateur appuie sur n'importe quelle touche de son clavier et qui n'affiche aucun message ?

    Je pensais à une boucle de ce genre :

    while utilisateur n'appuie pas sur clavier: (je sais pas si il y a moyen de tester ça, mais j'imagine)
    a=a (ou un autre truc bidon qui n'affiche rien)

  4. #4
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    nb : J'adore les réponses souvent très laconiques de wiztricks mais souvent pleines de bon sens.

    Là, ce qui te dérange, c'est que l'utilisateur ait à taper "Enter"/"Return" etc... pour passer à la suite et pas n'importe quelle touche.
    Tu fais comme tu veux mais tu n'es pas obligé de te prendre la tête avec des "interfaces" robustes à des gens avec un QI d'huître (surtout si tu leur dis qu'il faut taper Return/Enter/...) ! Y a mieux à faire. Mais bon, c'est toi qui vois.

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 553
    Points : 2 739
    Points
    2 739
    Par défaut
    Salut,

    je suis pas vraiment d'accord, c'est pas à l'utilisateur de s'adapter au comportement de l'application mais bien à l'application de s'adapter à l'utilisateur potentiel, qu'il ait un QI d'huitre ou non.

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Citation Envoyé par lohkr Voir le message
    avec cette methode, si le mec qui utilise mon programme appuie sur une autre touche que entrée, ça ne va pas le faire.
    Pas d'accord, essaye ceci pour t'en convaincre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def wait():
        e = raw_input()     # Ici le programme attend sans rien afficher
        print e             # Le programme reprend quelque soit la touche utilisée
     
    wait()

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    non mais en faites je cherche à faire une pause pendant que j'affiche des phrases. et qu'a chaque fois que l'utilisateur appuie sur un bouton, la phrase suivante s'affiche. Donc si en plein milieu de mon "texte" il y a marqué "appuyer sur une touche" ça le fait pas trop ^^

    Vinss, il y a une différence avec input et raw_input ? (je suis sur python 3.3.4)
    Parce que quand j'utilise ta methode avec input (j'y arrive pas avec raw_input --') le probleme est le meme qu'avec un simple input :/

    tryph, ça m'a l'air pas mal mais je t'avouerais que le débutant que je suis ne comprend pas une ligne de ce qui est marqué ^^

    Il n'existe pas de commande pour savoir si on appuie sur le clavier ? et pour récuperer la touche dans une variable ? (à la limite je m'en fout de récup la touche pour l'instant mais dans de futurs programmes ça peut servir)

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 343
    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 343
    Points : 36 864
    Points
    36 864
    Par défaut
    Citation Envoyé par lohkr Voir le message
    tryph, ça m'a l'air pas mal mais je t'avouerais que le débutant que je suis ne comprend pas une ligne de ce qui est marqué ^^
    Comme j'anticipais cette réaction, je vous ai donné à manger "input".
    Juste pour vous entendre dire "beurk".

    Malheureusement, pour faire ce que vous voulez il n'y a pas plus simple.

    Vous pouvez recopier cela dans un fichier "magics.py".
    Puis l'utiliser en écrivant dans votre programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from magics import getch as pause
     
    # on attend....
    pause()
    Programmer passe aussi par accepter d'utiliser des fonctionnalités réalisées par du code que vous seriez bien incapable d'écrire ou de comprendre. C'est du savoir faire en boîte prêt à l'emploi qui ressemble fort à de la cuisine.
    Nous collectionnons et partageons ces recettes via des cut&paste ou des procédés plus gérables qui s’appellent bibliothèque.

    Le fichier "magics.py" sera votre première bibliothèque. Vous y piquez dedans la fonction getch pour ce qu'elle apporte à ce que vous voulez que votre programme fasse comme vous auriez piqué "input" si çà le faisait.

    Si Python est sympa, c'est grâce à sa collection de bibliothèques "standards".

    Ce que vous voulez faire est "non-standard": il n'a pas mérité sa place dans les librairies Python.
    Essentiellement parce que "standard" = un consensus sur les fonctionnalités attendues.

    Vous pouvez récupérer un code moins compliqué à recette de cuisine n° 577977.

    Ça peut paraître "frustrant", mais est-ce que vous vous posez autant de questions lorsque vous tripotez la télécommande de votre télé?

    non mais en faites je cherche à faire une pause pendant que j'affiche des phrases. et qu'a chaque fois que l'utilisateur appuie sur un bouton, la phrase suivante s'affiche. Donc si en plein milieu de mon "texte" il y a marqué "appuyer sur une touche" ça le fait pas trop ^^
    Pour réaliser des interactions plus sophistiquées avec l'utilisateur, on utilise en général une interface graphique (comme tkinter). La "console" et une lecture facile des lignes vs. compliqué pour lire caractère par caractère est un héritage d'avant (les GUI graphiques).

    Pour écrire la variante UNIX du code de getch, il faut savoir ce qu'est un système d'exploitation, un driver de terminaux, et imaginer les contraintes d'un programmeur des années 70-80s. La librairie windows cache ces détails.

    Comprendre serait intéressant et très formateur mais le temps d'assimiler tout çà n'est pas compatible avec "rendre votre projet à la date attendue".

    - W

  9. #9
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut
    Ca semble être sous windows, une solution très simple avec le module os (j'imagine que vous faites une pause comme ça : os.system("pause")) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import os #à faire au début par convention
     
    a=os.popen("pause")
    b=a.read()#à mettre à la fin

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Comprendre serait intéressant et très formateur mais le temps d'assimiler tout çà n'est pas compatible avec "rendre votre projet à la date attendue".
    Je suis juste un phase d'apprentissage Je ne suis pas pressé, mais étant donné que je n'ai presque aucune connaissance de base, je rame un peu.

    Et comme je n'aime pas utiliser des choses que je ne comprends pas, je vais laisser mon programme tel qu'il est
    Merci de m'avoir proposé toutes ses solutions

  11. #11
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut
    Avant de fermer j'explique ma solution qui marche parfaitement sous windows :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import os #on importe le module qui contient les fonctions qui vont nous servir
     
    a=os.popen("pause") # on utilise popen qui va lancer une commande système sans faire apparaître de message, on initialise l'objet
    b=a.read() #on lit l'objet popen, ce qui a pour effet d'activer l'effet de la commande sans afficher son contenu, celui-ci sera stocké dans la variable b

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    Merci ! ça m'a l'air d'etre exactement ce qu'il me fallait

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/03/2014, 10h15
  2. Réponses: 30
    Dernier message: 19/03/2010, 00h06
  3. Réponses: 3
    Dernier message: 26/08/2009, 11h44
  4. Réponses: 25
    Dernier message: 18/12/2007, 22h06
  5. Réponses: 9
    Dernier message: 15/05/2007, 16h45

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