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

Tkinter Python Discussion :

Je n'ai pas compris "mainloop"


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Retraité developpeur informatique
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité developpeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Je n'ai pas compris "mainloop"
    Bonjour,
    Débutant en Python et Tkinter, je ne demande ce que je n'ai pas compris! Voici un petit code:


    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
     
     
    from tkinter import *
     
    def truc():
        print("premiere ligne de truc")
        print("seconde ligne de truc")
     
     
    print("debut du pgm")
    truc()
    print("autre ligne")
     
    mafenetre=Tk()
    mafenetre.title("test")
    mafenetre.geometry("300x200+250+30")
     
    mafenetre.mainloop()
    et je me demande pourquoi il n'y a que le premier "print" qui apparait, et les autres seulement après la fermeture de la fenêtre lorsque l'instruction "mafenetre.mainloop()" est présente.
    alors qu'ils apparaissent tous si l'instruction mainloop() est absente!

    Merci de votre aide, cordialement....

  2. #2
    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
    Salut,

    Ben les quatre lignes s'affichent bien dans l'ordre attend et l'interface est créée ensuite.

    Où est le problème ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Retraité developpeur informatique
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité developpeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour VinsS,
    Mon problème! Eh bien je suis étonné de ne voir dans le shell que le premier print. Les autres 'print' ne s'affichent que lorsque je ferme la fenetre. Je m'attendais à voir au moins les deux 'print' de la fonction 'truc'

    Cordialement

  4. #4
    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
    Je suis sous Linux et j'utilise un shell, donc pas une ligne de commande intégrée à un IDLE et je ne reproduis pas ton problème.

    Si quelqu'un d'autre ....

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Retraité developpeur informatique
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité developpeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci de ta réponse VinsS,
    j'ai plusieurs environnement et vais donc tester ce code sous linux (mageia).
    Je vais attendre un peu d'autres conseils avant de clore cette discussion.

    Cordialement...

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

    Citation Envoyé par grognenin Voir le message
    Mon problème! Eh bien je suis étonné de ne voir dans le shell que le premier print. Les autres 'print' ne s'affichent que lorsque je ferme la fenetre. Je m'attendais à voir au moins les deux 'print' de la fonction 'truc'
    On pourrait avoir le comportement que vous décrivez avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from tkinter import *
     
    def truc():
        print("premiere ligne de truc")
        print("seconde ligne de truc")
     
    print("debut du pgm")
     
    mafenetre=Tk()
    mafenetre.mainloop()
     
    truc()
    print("autre ligne")
    autrement dit avec l'appel à truc et le print après l'appel à mainloop.

    Vérifiez que le code que vous avez posté est bien celui que vous pensez.
    Sauvegardez vos instructions dans un fichier script.py et lancez le depuis la ligne de commande avec "python3 script.py": vous n'êtes pas à l'abri d'un effet de bord de votre environnement IDLE, shell, ???

    - W

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