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 : garder une variable entre plusieurs fenetres


Sujet :

Python

  1. #1
    Invité
    Invité(e)
    Par défaut Tkinter : garder une variable entre plusieurs fenetres
    Bonjour,
    Je suis actuellement en terminale S et je dois réaliser un programme en python pour le bac avec la spé ISN.
    J’utilise tkinter et ai déjà bien avancé mais je viens de me confronter à un problème :
    Mon programme demande a l'utilisateur de choisir une vitesse via un scale présent sur une 1ere fenêtre et relève cette valeur grâce a un button. Je ferme ensuite la fenêtre puis en ouvre une deuxième dans laquelle je souhaite calculer un temps avec la valeur vitesse choisie par l'utilisateur mais je n'arrive pas à garder la valeur pour pouvoir m'en servir sur cette deuxième page...

    Voici une version simplifié de la partie correspondante de mon 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    # -*- coding: utf-8 -*-
    import tkinter
    def Vit():
        affichage['text']= vitesse.get()
        fenetre.destroy
     
     
    fenetre = tkinter.Tk()
     
     
    vitesse= tkinter.Scale(fenetre, orient='horizontal', from_=0, to=10,
          resolution=1, tickinterval=1, length=400, activebackground="orange",
          label='vitesse', fg="#FF8000", bg="white",
          bd="12", troughcolor="#FF8000")
    affichage= tkinter.Label(fenetre)
     
    Valider = tkinter.Button(fenetre, text="Valider", fg="#FF8000", command=Vit )
     
    vitesse.pack()
    Valider.pack()
    affichage.pack()
     
    fenetre.mainloop()
     
     
     
    fenetre2=tkinter.Tk()
    Vitesse = tkinter.Label(fenetre2, text=vitesse.get(),  height=5, width=20)  
    #je me contente de l'afficher ici mais dans mon programme la valeur entrera dans un calcul
    Valider2 = tkinter.Button(fenetre2, text="Valider", fg="#FF8000", command=Vit )
     
    Vitesse.pack()
    Valider2.pack()
     
    fenetre2.mainloop()
    Ce problème revient trois fois car j’utilise un autre scale et demande un pseudo a l'utilisateur.
    Pouriez vous m'aider s'il vous plait?
    Merci d'avance

    betatest.py
    Dernière modification par wiztricks ; 19/04/2017 à 17h15.

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

    Vous ne pouvez pas avoir plusieurs fenêtre principales (celles créées avec Tk()) dans votre programme. fenetre.destroy (sans les () ne fait rien) va détruire aussi tous les autres widgets y compris ceux dans lesquels vous avez stocké des informations...
    On ne programme pas avec tkinter en pensant de façon séquentielle mais évènementielle... ce qui demande de passer du temps à apprendre avec un bon tutos.

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

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Merci de votre réponse (les () après le destroy ont juste étaient oubliées lorsque j'ai voulu faire le programme allégé), mais ne serait il pas possible d'assigner les valeurs des scales a des variables lorsque la 1er fenêtre est ouverte pour ensuite pouvoir utiliser la variable dans la 2eme fenêtre ? Juste récupérer la valeurs du scale, l'assigner a une variable a l'intérieur du programme et quand la deuxième fenêtre est ouverte j'utilise la variable créée précédemment qui n'a pas du être détruite si elle était stocké dans le programme.
    Peut être que ça ne se fait pas, je ne sais pas...

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par LeoIsma Voir le message
    mais ne serait il pas possible d'assigner les valeurs des scales a des variables lorsque la 1er fenêtre est ouverte pour ensuite pouvoir utiliser la variable dans la 2eme fenêtre ?
    La chose la plus simple s'appelle variable globale (et vous devez savoir ce que c'est non?).

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

  5. #5
    Invité
    Invité(e)
    Par défaut
    Euuu... Non
    Pouvez vous m'expliquer ou c'est compliqué?

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par LeoIsma Voir le message
    Pouvez vous m'expliquer ou c'est compliqué?
    C'est pas compliqué d'ouvrir le bon chapitre d'un tuto. pour y trouver des explications bien écrites avec des exemples.

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

Discussions similaires

  1. Utiliser une variable entre plusieurs form
    Par haythamonni dans le forum VB.NET
    Réponses: 2
    Dernier message: 23/05/2011, 08h13
  2. Partager une variable entre plusieurs classes
    Par jasonpolakow dans le forum Windows Forms
    Réponses: 8
    Dernier message: 06/01/2011, 10h02
  3. [Makefile] Garder une variable en mémoire entre 2 make
    Par Gui13 dans le forum Systèmes de compilation
    Réponses: 1
    Dernier message: 12/01/2009, 14h30
  4. partage d'une variable entre plusieurs threads
    Par baedal dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 27/02/2008, 20h33
  5. Garder le nom d'une variable sur plusieurs pages
    Par leloup84 dans le forum Langage
    Réponses: 2
    Dernier message: 25/10/2006, 14h21

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