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 :

ouvrir une (et une seule) fenêtre avec un bouton


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 29
    Par défaut ouvrir une (et une seule) fenêtre avec un bouton
    Bonjour,

    je suis débutant en Python (2.7) et Tkinter (8.5).
    Je m'étonne de ne pas avoir trouvé de réponse plus simple à ma question, d'où ce post.

    Je suis en train de créer une application avec 2 boutons (parametres et quitter) et une zone graphique (canvas).
    Le bouton paramètres ouvre une autre fenetre (toplevel) avec des infos à y modifer (et quitter envoie sur un tkMessageBox.askokcancel)

    Quand j'associe simplement le bouton parametre à ma fenêtre, il l'ouvre bien, mais je peux cliquer à nouveau sur le bouton et ouvrir une autre fenêtre. "indéfiniment".

    Pour l'instant, pour éviter cela, j'ai fait une classe listfen qui contient un dictionnaire, {"fenetre1":0, "fenetre2":0, "fenetre3":0}.
    Dès que j'ouvre une fenêtre, je passe la valeur de 0->1 pour la fenetre concernée dans la classe listfen. Et de 1->0 quand je la ferme.
    Avant d'ouvrir une fenêtre en question, je teste la valeur qui lui est associée dans listfen. Et donc, si c'est 0, je ne l'ouvre pas.

    Est-ce que c'est un bon moyen de travailler?

    Connaissez-vous un meilleur moyen?
    (désactiver le bouton en question? Empêcher de changer de fenêtre? ... ? )

    Merci!

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Salut,

    Citation Envoyé par Jijil Voir le message
    Connaissez-vous un meilleur moyen?
    (désactiver le bouton en question? Empêcher de changer de fenêtre? ... ? )
    Vous donnez vous même des solutions possibles.

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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 29
    Par défaut
    Merci pour votre réponse.
    Oui, c'est parce que c'est ce que j'observe ailleurs... mais je ne sais pas comment l'implementer avec Tkinter...

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Citation Envoyé par Jijil Voir le message
    Oui, c'est parce que c'est ce que j'observe ailleurs... mais je ne sais pas comment l'implementer avec Tkinter...
    On ne va pas chercher sur Internet à votre place ni répondre à des questions aussi ouvertes avec des exemples de code montrant comment on peut faire çà avec la méthode X, puis la méthode Y, ...
    Vous devez choisir la méthode et essayer de la réaliser pour avoir du code à montrer, histoire de comprendre les difficultés rencontrées..

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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 29
    Par défaut
    Merci. Oui, je comprends parfaitement.
    Nous nous sommes mal compris je pense, et ça m'incombe.

    Ma question sous-jacente était: y a-t-il une (ou plusieurs) bonne(s) pratique(s) à recommander pour cela?
    J'aurais aimé une simple réponse du style "avec la méthode grab_set()"

    J'ai (donc) entre temps découvert et testé .grab_set() et ça a l'air de répondre à ma demande. Je suppose que c'est LA méthode à appliquer pour ce cas à ma fenêtre toplevel?
    Y a-t-il un risque de contournement de cette méthode? (et de ce fait, dois-je conserver en parallèle mon "gestionnaire" de fenêtres ouvertes? pratiquer encore autrement?)

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Citation Envoyé par Jijil Voir le message
    Ma question sous-jacente était: y a-t-il une (ou plusieurs) bonne(s) pratique(s) à recommander pour cela?
    J'aurais aimé une simple réponse du style "avec la méthode grab_set()"
    C'est une question de "look & feel" de votre interface.
    Plutôt qu'afficher une nouvelle fenêtre, vous pourriez remplacer le contenu de l'actuelle.
    Et de toutes façon, il faudra gérer l'état de l'application pour savoir qu'appuyer sur le Button la première fois n'aura pas le même effet les fois suivantes.
    "grab_set" est une façon de faire car il participe à la création de fenêtres de dialogues "modales". C'est une technique à maîtriser mais pas la seule possible.

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

Discussions similaires

  1. Ouvrir une boite de dialogue JFileChooser avec un bouton
    Par zatopec dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 06/02/2016, 18h32
  2. Fermer une fenêtre avec un bouton
    Par keikoku84 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 04/12/2014, 23h47
  3. Fermer une fenêtre avec un bouton
    Par labaf dans le forum Tkinter
    Réponses: 2
    Dernier message: 20/04/2013, 17h41
  4. créer une fenêtre avec des boutons
    Par DIDIX dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 12/11/2010, 01h20
  5. Fermer une fenêtre avec un bouton
    Par Sylv3D dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 06/04/2010, 22h42

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