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 :

récupération de valeur du scale


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2017
    Messages : 8
    Points : 4
    Points
    4
    Par défaut récupération de valeur du scale
    Bonjour, je fais un programme de suivi de l'évolution d'une population et je rencontre un problème dans la mise en forme de l'interface graphique.
    Voici 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
    from tkinter import *
    import math as m
    import numpy as np
     
    class eau:
        def askwater():
            pourcenteau = DoubleVar()
            curseureau = Scale(orient='horizontal', from_=0, to=100,
            resolution=10, tickinterval=1, length=500,
            label='Quel pourcentage d\'eau désirez-vous?', variable=pourcenteau)
            curseureau.pack()
            validereau=Button(text="Valider", command=curseureau)
            validereau.pack()
     
    class programme(eau):
        def buildregion(n,p):
            interface= Tk()
            interface.geometry("1920x1080+0+0")
            commencer=Button(interface, text="Commencer", command=askwater)
            commencer.pack()
            interface.mainloop()
            coeff=[0,0,0,[0,0]]
            ligne=[p*[coeff]]
            region = n*ligne
            quantiteau=round((pourcenteau/100)*(n*p))
            alea=m.ceil((0.1*eau))
            print('alea=',alea)
            k=0
            while k<alea :
                i=np.random.randint(0,p)
                j=np.random.randint(0,n)
                region[j][i][0]=1
                print([i,j])
                k+=1
            print(region)
    L'erreur renvoyée est "NameError: name 'pourcenteau' is not defined"
    Cependant cette valeur est la valeur du scale choisie par l'utilisateur mais je n'arrive pas à la transmettre du programme "askwater" au programme "buildregion"
    Comment faire? Merci d'avance

  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 778
    Points
    36 778
    Par défaut
    Salut,

    Citation Envoyé par nicomonv Voir le message
    L'erreur renvoyée est "NameError: name 'pourcenteau' is not defined"
    Cependant cette valeur est la valeur du scale choisie par l'utilisateur mais je n'arrive pas à la transmettre du programme "askwater" au programme "buildregion"
    Comment faire? Merci d'avance
    Dans le code que vous montrez, "askwater" et "buildregion" ne sont pas des programmes mais des méthodes de classe.
    Et il n'y a aucune chance pour qu'une variable locale comme "pourcenteau" survive à la fonction et donc soit, à fortiori, accessible à l'extérieur de celle-ci.
    note: fonctions et portée des variables sont des notions de bases qu'il faut maîtriser avant de se lancer dans les classes! Et votre tuto. favori vous expliquera tout çà bien mieux que moi.

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2017
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci de votre réponse. Mon code de base était le même sans les classes. J'ai pensé que les méthodes des classes pouvait avoir un lien et partager leur variable..

    Si on schématisait le problème:
    Soit un programme utilisant à un moment un autre programme. Le but de cet autre programme et de déterminer la variable v.
    Comment faire pour utiliser la variable v dans le premier programme?

    Car personnellement, je pensais que si l'autre programme était exécuté par le premier programme, celui ci récupèrerait les variables définis par l'autre programme (sinon quelle utilité d'utiliser un programme à l'intérieur du programme?)

    Merci d'avance

  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 778
    Points
    36 778
    Par défaut
    Citation Envoyé par nicomonv Voir le message
    Si on schématisait le problème:
    Soit un programme utilisant à un moment un autre programme. Le but de cet autre programme et de déterminer la variable v.
    Comment faire pour utiliser la variable v dans le premier programme?

    Car personnellement, je pensais que si l'autre programme était exécuté par le premier programme, celui ci récupèrerait les variables définis par l'autre programme (sinon quelle utilité d'utiliser un programme à l'intérieur du programme?)
    Il ne fait pas "penser" mais apprendre une technique...
    Ce qui passe par l'acquisition d'un vocabulaire, de concepts et de temps passé à pratiquer.
    La seule chose que je peux vous proposer est la lecture du chapitre ad hoc de notre tuto. préféré.

    Bon courage.

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

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2017
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    D'accord je vais me pencher la dessus !
    Je sais que l'acquisition dun langage comme python se fait par la pratique mais étant en prépa j'ai fait le choix de laisser de côté l info en me concentrant sur les sciences et maintenant je dois charbonner pour rattraper mon retard :-D

  6. #6
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 609
    Points : 2 073
    Points
    2 073
    Par défaut
    En prépa, la POO est hors programme.
    Il y a peut-être moyen de s'en passer ici ?
    Pas d'aide par mp.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2017
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    J'ai lu quelque part que POO était la methode de classification . si c'est bien cela bon ce n'est pas au programme mais je cherche juste un moyen de résoudre mon problème pour notre projet et si je dois utiliser des méthodes hors programme ce n'est pas un souci ^^
    La j'ai essayé les classes mais effectivement c'est inutile

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2017
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    J'ai lu le tutoriel sur les variables mais je ne vois toujours pas comment récupérer cette valeur..
    Sans forcément me dire comment faire, pouvez vous au moins me dire si c'est possible, histoire que je ne perde pas mon temps pour rien et que je change mon programme..
    Merci d'avance

  9. #9
    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 778
    Points
    36 778
    Par défaut
    Citation Envoyé par nicomonv Voir le message
    J'ai lu le tutoriel sur les variables mais je ne vois toujours pas comment récupérer cette valeur..
    Sans forcément me dire comment faire, pouvez vous au moins me dire si c'est possible, histoire que je ne perde pas mon temps pour rien et que je change mon programme..
    Si vous avez compris ce que raconte le tutoriel, vous devriez voir comment réaliser cela avec une "variable globale".
    Mais comme vous n'avez pas encore lu (et pratiqué) les classes, les virer signifie quand même changer votre programme.
    nota: si vous n'avez pas encore pigé la portée des variables, la durée de vie des objets associés çà sera pour plus tard...

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

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2017
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Oui en lisant le tuto j'ai directement essayé avec la variable globale . ca fonctionnait pas mais j'ai demandé a mon prof et ca fonctionnait pas pour lui non plus ^^
    Je vous enverrai dans la journée le programme avec la variable globale ^^

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2017
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Voici mon code en utilisant les variables globales:
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    from tkinter import *
    import math as m
    import numpy as np
     
    pourcenteau=0
    pourcentforest=0
     
    def askforest():
        global pourcentforest
        curseurforest = Scale(orient='horizontal', from_=0, to=100,
        resolution=10, tickinterval=10, length=500,
        label='Quel pourcentage de surface terrestre désirez-vous recouvert de forêt?',
        relief='groove', variable=pourcentforest)
        curseurforest.pack()
        validerforest=Button(text="Valider")
        validerforest.pack()
        return()
     
    def askwater():
        global pourcenteau
        a=DoubleVar()
        curseureau = Scale(orient='horizontal', from_=0, to=100,
        resolution=10, tickinterval=10, length=500,
        label='Quel pourcentage d\'eau désirez-vous?', relief='groove', variable=a)
        curseureau.pack()
        pourcenteau=a
        validereau=Button(text="Valider", command=askforest)
        validereau.pack()
        return()
     
    def buildregion(n,p):
        global pourcenteau
        interface= Tk()
        interface.geometry("1920x1080+0+0")
        commencer=Button(interface, text="Commencer", command=askwater)
        commencer.pack()
        coeff=[0,0,0,[0,0]]
        ligne=[p*[coeff]]
        region = n*ligne
        quantiteau=round((pourcenteau/100)*(n*p))
        interface.mainloop()
        alea=m.ceil((0.1*quantiteau))
        print('alea=',alea)
        k=0
        while k<alea :
            i=np.random.randint(0,p)
            j=np.random.randint(0,n)
            region[j][i][0]=1
            print([i,j])
            k+=1
        print(region)
    quand je run le programme, pourcenteau devrait prendre la valeur a (valeur étant celle du scale) pourtant il est toujours égal à 0..
    Je pensais à utiliser la commande a.get() dans le bouton valider mais apparemment cette commande n'existe pas donc comment dois-je faire?
    Je suis sur la bonne voie mais je sens qu'une chose toute simple m'échappe...

    Merci d'avance

  12. #12
    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 778
    Points
    36 778
    Par défaut
    Citation Envoyé par nicomonv Voir le message
    quand je run le programme, pourcenteau devrait prendre la valeur a (valeur étant celle du scale) pourtant il est toujours égal à 0..
    Certes mais au moins il n'y a plus de NameError comme vous le rapportiez dans le post initial. Donc passer par les variables globales "fonctionne".

    Pour le reste, ligne 5, pourcenteau est initialisé à 0.
    Quand on exécute la ligne 40: quantiteau = round((pourcenteau/100)*(n*p)), il n'y a aucune chance que cette valeur ait changé puisque askwater n'a pas encore été exécuté.
    Si vous ne comprenez pas pourquoi, c'est que vous utilisez tkinter sans trop comprendre comment fonctionne la programmation évènementielle. Là encore, il faut prendre le temps d'ouvrir un tuto. (et c'est un peu plus compliqué que la portée des variables...).

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

Discussions similaires

  1. [checkbox] Récupération des valeurs de checkbox
    Par chng001 dans le forum Struts 1
    Réponses: 13
    Dernier message: 07/09/2009, 20h31
  2. [struts] [checkbox] récupération des valeurs cochées
    Par abourell dans le forum Struts 1
    Réponses: 16
    Dernier message: 10/06/2005, 20h58
  3. Réponses: 8
    Dernier message: 09/03/2005, 10h47
  4. récupération de valeur de lien
    Par sex-sansbol dans le forum ASP
    Réponses: 3
    Dernier message: 07/06/2004, 10h43
  5. Récupération de valeurs d'un tableau
    Par leeloo076 dans le forum ASP
    Réponses: 12
    Dernier message: 25/03/2004, 10h59

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