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érer la valeur d'un curseur 'Scale' créé par boucle 'for'


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Gérant
    Inscrit en
    Octobre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Récupérer la valeur d'un curseur 'Scale' créé par boucle 'for'
    Bonjour
    Afin de positionner des axes motorisés sur une machine, je dois déplacer un(des) curseur(s) sur mon interface puis appuyer sur le(s) bouton(s) correspondant(s) pour lancer le cycle sur l'axe choisi...
    Comme j'ai plusieurs axes, j'ai décidé dans un premier temps d'utiliser une boucle pour créer les boutons et curseurs en question
    Grace à ce forum, j'ai pu apprendre à récupérer le nom du bouton appuyé
    Reste maintenant à obtenir la valeur du curseur correspondant au-dit bouton...

    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
     
    from Tkinter import *
    fenetre=Tk()
    a=['nom a',0,25,0]
    b=['nom b',0,50,0]
    c=['nom c',0,75,0]
    d=['nom d',0,99,0]
    famille={'a':a,'b':b,'c':c,'d':d}
     
    i=-1
    for loop in sorted(famille.keys()):
        fam=famille[loop]
        i+=1
        boutton=Button(fenetre, text=fam[0], command=lambda m=fam[0]: etapeSuivante(m))
        curseur=Scale(fenetre, label=fam[0], from_=fam[1], to=fam[2], orient=HORIZONTAL)
        boutton.grid(row=i, column=0)
        curseur.grid(row=i, column=1)
     
    def etapeSuivante(z):
        print z
        #get() et print de la valeur du curseur correspondant à bouton z
     
    fenetre.mainloop()
    Aurais-je la possibilité d'attribuer à un curseur son nom depuis une liste, et de même de stocker sa valeur courante dans une liste (ou ces deux valeurs dans un dictionnaire) ?

    Merci pour votre aide

  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,

    Citation Envoyé par digiboybx Voir le message
    Reste maintenant à obtenir la valeur du curseur correspondant au-dit bouton...
    Lorsque vous écrivez "command=lambda m=fam[0]: etapeSuivante(m)", pourquoi passer une chaine de caractère plutôt que le widget "scale" qui vous intéresse?
    Ca donnerait:
    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
     
    from Tkinter import *
     
    fenetre=Tk()
     
    echelles = (
        ('nom A',0,25,0),
        ('nom B',0,50,0),
        ('nom C', 0,75,0),
        ('nom D',0,99,0),
        )
     
    for x, (nom, to, from_, _) in enumerate(echelles):
        btn = Button(text=nom)
        scale = Scale(label=nom, from_=from_, to=to, orient=HORIZONTAL)
        btn['command'] = lambda nom=nom, scale=scale: etape_suivante(nom, scale)
        btn.grid(row=x, column=0)
        scale.grid(row=x, column=1)
     
    def etape_suivante(nom, scale):
        print nom, scale.get()
     
    fenetre.mainloop()

    Citation Envoyé par digiboybx Voir le message
    Aurais-je la possibilité d'attribuer à un curseur son nom depuis une liste, et de même de stocker sa valeur courante dans une liste (ou ces deux valeurs dans un dictionnaire) ?
    Il suffit de programmer...

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Gérant
    Inscrit en
    Octobre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 6
    Points : 8
    Points
    8
    Par défaut


    Merci infiniment !

    C'est exceptionnellement simple, et pourtant cela correspond en tout point à ce qu'il me faut!!!

    J'aime la façon de condenser les listes ! Cela ouvre des nouveaux horizons à ma programmation actuelle...
    J'aime aussi la façon de construire la boucle !

    Épatant, merci encore

  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 digiboybx Voir le message
    C'est exceptionnellement simple, et pourtant cela correspond en tout point à ce qu'il me faut!!!
    Ce serait encore plus simple sans les Button mais je n'ai pas osé les supprimer.

    Citation Envoyé par digiboybx Voir le message
    J'aime la façon de condenser les listes ! Cela ouvre des nouveaux horizons à ma programmation actuelle...
    J'aime aussi la façon de construire la boucle !
    Il n'y a pas de quoi s'esbaudir. Ces constructions sont présentées dans la plupart des bons tutos et... si vous vous attaquez à la programmation graphique sans encore les maîtriser vous allez souquer comme un malade.

    - 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
    Gérant
    Inscrit en
    Octobre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    merci pour le message

    15 ans après mes derniers programmes en C, je me remets à la programmation avec l'Arduino et le Pi... pour une application professionnelle

    Après deux semaines de Python, ça se dérouille lentement... pour le moment, je souque ferme!!! Mais je tiens le cap!

    Merci encore pour votre aide

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

Discussions similaires

  1. Récupérer des valeurs d'un objet sans passer par les boucles
    Par soucou dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 02/03/2013, 16h05
  2. Réponses: 1
    Dernier message: 23/05/2012, 22h41
  3. Réponses: 2
    Dernier message: 09/12/2010, 20h52
  4. [Spip] Récupérer la valeur d'une variable PHP dans une boucle Spip
    Par papisdoums dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 10/04/2009, 19h03
  5. Réponses: 4
    Dernier message: 05/06/2008, 21h55

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