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 :

passage de variables Tkinter / python


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mai 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mai 2016
    Messages : 6
    Points : 2
    Points
    2
    Par défaut passage de variables Tkinter / python
    Bonjour à tous.

    J'ai en tête un pilotage de leds RGB.
    Débutant, je code sous python 2.7.

    Je veux faire varier ma couleur en "temps réel" à travers 3 variables teinte saturation et luminance récoltées par des scales de Tkinter.

    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
    # -*- coding: cp1252 -*-
     
    from Tkinter import *
     
    global teinte, saturation, luminance
    teinte=0.0
    saturation=0.0
    luminance=0.0
     
    def modifT(t):
       teinte= varT.get()
       print "teinte=",teinte,          "saturation=",saturation,          "luminance=",luminance
     
    def modifS(s):
       saturation= varS.get()
       print "teinte=",teinte,          "saturation=",saturation,          "luminance=",luminance
     
    def modifL(l):
       luminance= varL.get()
       print "teinte=",teinte,          "saturation=",saturation,          "luminance=",luminance
     
    scales = Tk() # ------------------fenêtre SCALES ----------------
     
    varT = DoubleVar()
    varS = DoubleVar()
    varL = DoubleVar()
     
    scaleT = Scale( scales, variable = varT, command=modifT, from_=1, to=0,resolution=0.01,orient='horizontal')
    scaleS = Scale( scales, variable = varS, command=modifS, from_=1, to=0,resolution=0.01,orient='vertical')
    scaleL = Scale( scales, variable = varL, command=modifL, from_=1, to=0,resolution=0.01,orient='vertical')
     
    scaleT.pack()
    scaleS.pack()
    scaleL.pack()
     
    scales.mainloop()
    Comme vous l'aurez certainement remarqué, mes 3 variables retournent à chaque fois à leur état initial car je n'arrive pas à les passer correctement de Tkinter à python. J'ai mis les prin t pour voir l'évolution des mes variables.
    J'ai eu beau me coltiner pas mal de docs sur les scales et Tkinter, j'arrive pas à voir nettement comment faire, je dois me mélanger les pinceaux.

    A vot bon coeur et 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 776
    Points
    36 776
    Par défaut
    Salut,

    Lancez la console Python et écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> a = 0
    >>> def f():
    ...     a = 1
    ...
    Si vous appelez "f", est-ce que "a" sera modifié?

    C'est une question de portée des variables que Scale ne va pas résoudre...

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mai 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mai 2016
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Ben voilà.
    Je pensais que c'était Tkinter qui ne passait mes variables puisque je pensais que le fait de définir mes variables en global sous python suffisait.
    Au passage, merci pour les liens dans ta signature.
    Merci beaucoup.

  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 T.a.t Voir le message
    Je pensais que c'était Tkinter qui ne passait mes variables puisque je pensais que le fait de définir mes variables en global sous python suffisait.
    "global" a du sens dans le corps d'une fonction. A l'extérieur, çà ne fait rien... çà ne dit même pas "vous vous êtes peut être trompé quelque part". La portée des variables est un concept important: si vous le pensez de travers, vous allez perdre beaucoup de temps à chercher là où il n'y a rien à trouver.

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

  5. #5
    Candidat au Club
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mai 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mai 2016
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    C'est effectivement ce qui s'est passé. Je pose une question sur un forum qu'en dernier recours après avoir beaucoup cherché par moi même.
    Mais il y a des moments où on sait plus par où chercher.

    Donc le fait de déclarer une variable globale dans une fonction la rend accessible à tout le code ou uniquement à la fonction directement au dessus ?

  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
    Salut,

    Citation Envoyé par T.a.t Voir le message
    C'est effectivement ce qui s'est passé. Je pose une question sur un forum qu'en dernier recours après avoir beaucoup cherché par moi même.
    Mais il y a des moments où on sait plus par où chercher.
    Si dans un bon tuto. comme le Swinnen, programmer avec tkinter arrive au chapitre 10, c'est qu'il y a des tas de concepts et de réflexes à avoir acquis....

    Citation Envoyé par T.a.t Voir le message
    Donc le fait de déclarer une variable globale dans une fonction la rend accessible à tout le code ou uniquement à la fonction directement au dessus ?
    Côté réflexes, lancer la console Python pour voir ce que çà donne et forger votre point de vue (et poster un exemple de comportements que vous ne comprenez pas trop ce que raconte votre tuto.).... Etre curieux et tester: le résultat est quasi immédiat - pas besoin de construire un accélérateur de particules!

    Tout ce qu'il y a à savoir sur le sujet est écrit ici. C'est dans un langage technique: clair, concis et qui restera illisible tant qu'on ne sait pas traduire ce que çà raconte en exemple de code.
    Heureusement qu'il y a des tutos pour vous permettre de coder sans comprendre ce charabia...

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

  7. #7
    Candidat au Club
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mai 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mai 2016
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Question console c'est mon premier réflexe.
    Par contre, je ne comprenais pas que mes variables se réinitialisent, je me doutais bien que c'était une histoire de portée mais je n'avais pas compris si cela venait de Tkinter ou de python.
    Encore merci beaucoup pour les explications et les liens.
    J'espère que je ne vous embêterai pas trop dorénavant.
    a+

Discussions similaires

  1. passage de variables et Tkinter
    Par trombo dans le forum Général Python
    Réponses: 26
    Dernier message: 08/12/2009, 07h35
  2. Passage de variable dans un lien asp
    Par VirginieGE dans le forum ASP
    Réponses: 4
    Dernier message: 27/07/2004, 10h06
  3. [Kylix] passage de variable en Libc
    Par zheng dans le forum EDI
    Réponses: 11
    Dernier message: 06/05/2004, 14h14
  4. Passage de variable par methode post ?
    Par oazar dans le forum Flash
    Réponses: 33
    Dernier message: 16/10/2003, 17h03
  5. [langage] Passage de variables...
    Par martijan dans le forum Langage
    Réponses: 8
    Dernier message: 30/07/2003, 09h48

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