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 :

Pourquoi suis-je forcé de fermer une fenêtre pour en afficher une autre ?


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Charcutier-paysagiste
    Inscrit en
    Mars 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Charcutier-paysagiste
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2021
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Pourquoi suis-je forcé de fermer une fenêtre pour en afficher une autre ?
    Bonsoir,

    Je cherche à savoir pourquoi lorsque je créé une fenêtre avec tkinter je suis obligé de la fermer afin que la suite du code "se poursuive". J'aimerais pouvoir en afficher plusieurs en même temps sans qu'elles n'aient de rapport entre elles. J'ai lu plusieurs informations au sujet du widget Toplevel, cependant si la solution est là je ne l'ai pas saisie.

    Voici le code, les fioritures en moins :

    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
    from tkinter import *
     
    x = 0
     
    while x != 1 :
     
        photo = input(">>> ")
     
        if photo == "stop" :
     
            x = x + 1
            continue
     
        else :
     
            fenêtre = Tk()
     
            image = PhotoImage(file="d:/"+photo+".png") 
     
            canevas = Canvas(fenêtre, width=250, height=350)
            canevas.create_image(125, 175, anchor=CENTER, image=image)
            canevas.pack()
     
            fenêtre.mainloop()

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

    Citation Envoyé par alphonsedanlta Voir le message
    Je cherche à savoir pourquoi lorsque je créé une fenêtre avec tkinter je suis obligé de la fermer afin que la suite du code "se poursuive".
    Essentiellement parce que l'instruction fenetre.mainloop est bloquante.
    Elle dit à tkinter attend qu'un évènement déclenche une action pour mettre à jour l'affichage.
    Fermer la fenêtre détruit la fenêtre principale et sort de cette mainloop.

    Citation Envoyé par alphonsedanlta Voir le message
    J'ai lu plusieurs informations au sujet du widget Toplevel
    Vous pouvez lire tout ce que vous voulez, si vous n'avez pas pris le temps d'apprendre à programmer avec tkinter, vous ne comprendrez absolument rien à ce qu'on pourra essayer de vous raconter.
    C'est un peu comme si on voulait construire une maison sans commencer par les fondations!

    Sinon on peut programmer çà comme çà:
    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 *
     
    root = Tk()
    root.withdraw()
     
    while True :
        photo = input(">>> ")
        if photo == "stop" :
            break
        else :
            w = Toplevel()
            Label(w, text=photo).pack() 
            w.update()
    mais si vous ne comprenez pas pourquoi ce code fonctionne, vous allez avoir de mauvaise surprises en essayant de ré-utiliser ce genre de construction.

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Charcutier-paysagiste
    Inscrit en
    Mars 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Charcutier-paysagiste
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2021
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    D'accord merci, je vais alors tout d'abord plus étudier les bases de tkinter.

  4. #4
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    870
    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 : 870
    Points : 1 522
    Points
    1 522
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par alphonsedanlta Voir le message
    D'accord merci, je vais alors tout d'abord plus étudier les bases de tkinter.
    Je trouve la ressource ci-dessous particulièrement bien écrit (en français):
    http://ateliers.mse.free.fr/tkinter/page_tkinter.html
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Charcutier-paysagiste
    Inscrit en
    Mars 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Charcutier-paysagiste
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2021
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Oui j'ai commencé à lire ce document et une phrase m'interpelle :

    "Or dans une application il ne peut y avoir qu'une fenêtre Tk, la fenêtre "racine" de l'application. Toutes les autres fenêtres sont appelées Toplevel et sont dépendantes d'une autre fenêtre, son conteneur (maître, propriétaire)".

    Car ce que je cherche à faire est simplement pouvoir afficher x images dans différentes fenêtres indépendantes, et ce en devant entrer à chaque fois le nom de l'image que je cherche à afficher. Je ne suis donc pas sûr de saisir soit l'utilité de la fenêtre racine, soit l'utilité des autres fenêtres Toplevel (étant donné que dans mon cas aucune n'a plus de valeur qu'une autre et elles sont indépendantes).

    D'autant plus que lorsque j’affiche une deuxième image dans une deuxième fenêtre, l'image contenue dans la première disparait. Il me faudrait donc un moyen de faire persister chaque fenêtre que j'ouvre, tout en pouvant poursuivre et rentrer de nouveaux noms pour ouvrir de nouvelles images dans de nouvelles fenêtres.

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

    Citation Envoyé par alphonsedanlta Voir le message
    "Or dans une application il ne peut y avoir qu'une fenêtre Tk, la fenêtre "racine" de l'application. Toutes les autres fenêtres sont appelées Toplevel et sont dépendantes d'une autre fenêtre, son conteneur (maître, propriétaire)".
    La notion d'application Tk n'a rien à voir avec "programme qui utilise Tk" mais a une logique d'espace de nommage à l'intérieur de TCL/Tk où sont créés widgets, variables, ...

    Il s'agit de rendre compte que si on a plusieurs Tk, ils sont indépendants.

    Après revoyez l'exemple que je vous ai donnée, il y a un seul Tk que je masque et plein de Toplevel qui contiennent un Label avec la chaine de caractères saisies...

    Citation Envoyé par alphonsedanlta Voir le message
    D'autant plus que lorsque j’affiche une deuxième image dans une deuxième fenêtre, l'image contenue dans la première disparait.
    Il faut voir le code mais l'erreur du débutant est d'assigner la nouvelle image à la variable qui référence l'image précédente (qui du coup disparaît).

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

Discussions similaires

  1. [Débutant] Ouvrir une fenêtre et fermer une autre fenetre
    Par Ecxtazy dans le forum C#
    Réponses: 8
    Dernier message: 06/07/2017, 11h17
  2. Réponses: 2
    Dernier message: 21/09/2009, 11h30
  3. fermer une autre application
    Par cluf4138b dans le forum Delphi
    Réponses: 3
    Dernier message: 19/05/2007, 07h59
  4. Réponses: 6
    Dernier message: 20/12/2006, 19h22
  5. Réponses: 2
    Dernier message: 08/12/2006, 12h51

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