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 :

Deux cas similaires mais de résultats différents


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Deux cas similaires mais de résultats différents
    Bonjour, tous d'abord voici mon code:

    Fonction 1 : les variables c et c1 affiche la bonne valeur correspondant à l'état de la checkbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    now=datetime.datetime.now()
    fenetre = Tk()
    c1 = IntVar()
    c = IntVar()
    champ_label=Label(fenetre,text="Veuillez choisir un type de Mise en configuration")
    champ_label.pack()
    box1 = Checkbutton(fenetre, text="MEC MATIN",variable=c)
    box1.pack()
    box2 = Checkbutton(fenetre, text="MEC_APRES MIDI",variable=c1)
    box2.pack()
    bouton1 = Button(fenetre, text="OK", command=test_checkbox1)
    bouton1.pack()
    fenetre.mainloop()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def test_checkbox1() : 
    	print(c1.get())
    	print (c.get())
    Fonction 2 : les variables z1 et z reste à 0 comme si python et moi ne parlions pas des memes z1 et z

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	fenetre2 = Tk() 
    	z1 = IntVar()
    	z = IntVar()
    	champ_label2 =Label(fenetre2,text="La mise en configuration a été éffectué hors delais. Merci de Choisir une des options ci dessous")
    	champ_label2.pack()
    	box1 = Checkbutton(fenetre2, text="Pbs_Chargement AMO",variable=z)
    	box1.pack()
    	box2 = Checkbutton(fenetre2, text="Autres",variable=z1)
    	box2.pack()
    	bouton1 = Button(fenetre2, text="OK", command=test_checkbox2)
    	bouton1.pack()
    	fenetre2.mainloop()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def test_checkbox2() :
    	print(z.get())
    	print(z1.get())
    La seule différence entre les 2 codes est que la première qui fonction c et c1 sont déclarées dans le "main" disons....... et que z et z1 sont déclaré dans une fonction je vous rassure si je déclare z et z1 dans le main ca ne marche pas non plus.

    Merci de votre aide.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Si elles n'ont pas été déclarées global la portée de tes checkbox z et z1 est limitée à l'espace de nom de la fonction où tu les crées.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    donc pour toi un simple :


    global z1
    global z
    z1 = IntVar()
    z = IntVar()

    suffirait???

  4. #4
    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,

    Pas facile de vous répondre sans un code plus complet, mais en voyant cette construction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	fenetre2 = Tk() 
    	z1 = IntVar()
    	z = IntVar()
    Je vous suggérerais de remplacer "fenetre2 = Tk()" par "fenetre2 = Toplevel()".

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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Merci la solution cela fonctionne, par contre si tu pouvais m'expliquer car j'ai pas compris la subtilité????

    De plus Toplevel(), m'affiche 2 fenêtres une vide et une avec la fenêtre que j'ai définie. Comment puis-je supprimer la fenêtre vide?

    Merci.

  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
    Citation Envoyé par jucva Voir le message
    Merci la solution cela fonctionne, par contre si tu pouvais m'expliquer car j'ai pas compris la subtilité????
    Chaque fois que vous appelez Tk(), vous créez une Toplevel et un interpréteur TCL/Tk dans lequel seront stockées les différentes variables (TCL) de votre application. Le soucis est que si vous ne précisez pas le "master" en écrivant IntVar(), la variable sera crée dans le premier interpréteur Tk (qui est celui par défaut).

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/06/2015, 14h14
  2. Deux réseaux semblables mais à la topologie différente
    Par Koudou dans le forum Administration
    Réponses: 6
    Dernier message: 13/09/2011, 16h54
  3. Réponses: 10
    Dernier message: 30/09/2010, 17h51
  4. Réponses: 3
    Dernier message: 07/05/2009, 10h31
  5. Réponses: 6
    Dernier message: 24/05/2007, 13h40

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