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 :

tkinter : Conflit entre 2 fenêtres ? [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Par défaut tkinter : Conflit entre 2 fenêtres ?
    Bonsoir,
    Je ne comprends pas pourquoi , dans le petit exemple ci-dessous la variable StringVar de l'Entry de la seconde fenêtre disparait dès lors que j'ai construit la première
    Merci de vos réponses..
    Code python : 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
     
    # -*- encoding : utf8 *-*
    from tkinter import *
     
    ##fen_responsable_erreur = Tk()   # Si cette fenetre n'est pas crée, par exemple
    ##                       #  en mettant les instructions idoines en commentaire,
    ##                       # 'fen_new_dico' s'affiche corectement, càd avec le bon
    ##                       # libellé dans entr_dico sinon la zone de saisie est vide
    ##fen_responsable_erreur.title("FENETRE COUPABLE")
    ##fen_responsable_erreur.geometry("330x60+500+300")
    ##
     
    fen_new_dico = Tk() #------------------------- INSTANC. FEN_NEW_DICO  -----------------------------------
    fen_new_dico.title(' DICTIONNAIRE ')
    fen_new_dico.geometry("330x60+500+450")
     
    nom_dico=StringVar()
    nom_dico.set("mettre le texte par défaut ici")
    entr_dico=Entry(fen_new_dico,textvariable=nom_dico,width=30)
    entr_dico.grid(row=3,columnspan=2,padx=15)
    entr_dico.select_range(0,END)
    entr_dico.focus_set()
    fen_new_dico.mainloop()

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

    L'appel à Tk() crée la fenêtre principale de l'application et lance un interpréteur TCL dans lequel seront définis widgets et variables.
    Si vous avez effectué "plusieurs" appels à Tk(), c'est autant d'applications "distinctes" et la nécessité de préciser "dans" quel interpréteur Tk vous voulez créer widgets et variables.
    Par défaut, les objets seront crées dans le premier interpréteur Tk créé - la fonction NoDefaultRoot force à préciser le "master".

    Ca devrait marcher mieux avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    nom_dico=StringVar(master=fen_new_dico)  # on dit dans quel interpréteur Tk
    nom_dico.set("mettre le texte par défaut ici")
    entr_dico=Entry(fen_new_dico,textvariable=nom_dico,width=30)
    Mais, en fait, vous ne voulez pas créer plusieurs applications mais une autre fenêtre. Pour çà il faut appeler Toplevel() plutôt que Tk() - appelé une seule fois au début.

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

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    L'appel à Tk() crée la fenêtre principale de l'application et lance un interpréteur TCL dans lequel seront définis widgets et variables.
    Si vous avez effectué "plusieurs" appels à Tk(), c'est autant d'applications "distinctes" et la nécessité de préciser "dans" quel interpréteur Tk vous voulez créer widgets et variables.
    Par défaut, les objets seront crées dans le premier interpréteur Tk créé - la fonction NoDefaultRoot force à préciser le "master".

    Ca devrait marcher mieux avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    nom_dico=StringVar(master=fen_new_dico)  # on dit dans quel interpréteur Tk
    nom_dico.set("mettre le texte par défaut ici")
    entr_dico=Entry(fen_new_dico,textvariable=nom_dico,width=30)
    Mais, en fait, vous ne voulez pas créer plusieurs applications mais une autre fenêtre. Pour çà il faut appeler Toplevel() plutôt que Tk() - appelé une seule fois au début.

    - W
    Merci wiztricks,
    En fait je veux aller plus vite que la musique : le petit exercice proposé par G. Swinnen dans son tuto et concernant les dictionnaires ne me demandait que des
    "input" et autres "print"...Moins d'impatience et je ne vous aurais pas fait perdre de tps
    (Mais je vais essayer, bien sûr !)

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Par défaut
    Cà marche ! Merci W

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

Discussions similaires

  1. Conflit entre javascript et script ASP
    Par Mvu dans le forum ASP
    Réponses: 2
    Dernier message: 22/02/2005, 16h28
  2. Possibles conflits entre GL, GLAUX et GLUT
    Par barthelv dans le forum GLUT
    Réponses: 1
    Dernier message: 19/11/2004, 12h31
  3. Conflit entre bases de données
    Par BRODU dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/10/2004, 11h40
  4. conflit entre couleurs
    Par khayyam90 dans le forum OpenGL
    Réponses: 2
    Dernier message: 03/07/2004, 18h00
  5. [Technique] Conflits entre plusieurs requêtes
    Par Neowile dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 24/03/2003, 09h37

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