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 :

Recuperer un donnee pour l'utiliser dans une fonction


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Recuperer un donnee pour l'utiliser dans une fonction
    Salut,
    J'ai un probleme pour recuperer une donnee et pour l'utiliser dans une fonction. En fait c'est un peut complexe:

    J'ai créé une boucle qui créé plusieurs boutons quasi-identique. Ces boutons ont comme commande une fonction qui est censé modifier le texte d'un label. Ce que je veut c'est que ce nouveau texte corresponde au numero du bouton dans le tableau.

    Et tout ceci en utilisant la meme fonction

    Voila une partie de mon code qui remplace le texte par '1' (c'est juste un test):

    **************
    def comBoutonStep():
    LabTest.config(text='1')

    ...
    ...

    for noStep in range(nbSteps):
    TabBoutonStep[noStep] = Button(fenChoix1, text ="Element "+`noStep`, command = comBoutonStep)
    TabBoutonStep[noStep].pack()
    TabBoutonStep[noStep].grid(row = noRow, column =1, padx =8 )
    ***************

    Je ne vois pas du tout comment faire, peut etre pouvez vous m'aidez.

    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 52
    Points : 55
    Points
    55
    Par défaut
    Bonjour!

    -Tu ne précise pas quel GUI tu utilises? Apperement c'est Tkinter mais ça serait bien de préciser

    -Si c'est bien Tkinter, l'ennuie c'est que tu ne peux pas mettre un paramètre à ta fonction dans un bouton.
    Le mieux serait de créer une classe bouton avec pour membre un bouton Tkinter et son index. Dans la fonction __init__(self), tu met en paramètre un numéro qui sera l'index de ton bouton, et tu créé ce bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def __init__(self,num):
    	self.index=num
    	self.TabBoutonStep = Button(fenChoix1, text ="Element "+str(num), command = self.comBoutonStep)
    	self.TabBoutonStep.pack()
    	self.TabBoutonStep.grid(row = noRow, column =1, padx =8 )
    Comme tu vois j'ai mis command = self.comBoutonStep, ce qui implique que la fonction appellée est la fonction comBoutonStep de ta classe. Ainsi tu n'a plus qu'a créé cette fonction dans ta classe, avant la fonction __init__ car __init__ fait appel à comBoutonStep :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def comBoutonStep(self):
    	print self.index
    Ensuite dans ta boucle tu cré une instance de cette classe avec en paramètre l'itération. Ce qui cré tes boutons.
    J'ai vérifié et ça fonctionne, le bouton écris 0 sur la consol, le 1 1 etc...

    Tu remarqueras que j'ai mis "Element "+str(num) à la place de "Element "+'nostep', ce qui renverrais la chaîne de caractères "Elementnostep". La fonction str() te permet de convertir en chaîne de caractères un nombre entier ou à virgule flottante. Tu peux à l'inverse faire int() ou float().

    J'espère que tu es familisarisé avec les classes pythons?? En tout cas c'est très important : comme tu peux le voir, ça permet des tas de choses!!

    PS : Met la balise [Code] quand tu met du code, c'est plus lisible

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Je te remercie vraiment, j'ai reussi a faire marcher ce que je voulais en faisant ce que tu m'a dit.

    J'ai eu un peut de mal car je n'y connaissais rien en classe sous Python, (ca fait 2 semaines que je m'y suis mis), mais maintenant c'est compris. Ton explication etait suffisamment detailler pour que je comprenne.

    J'utilisais effectivement Tkinter, desole de ne pas l'avoir preciser

    Aussi, a propos de "Element "+'nostep', les ' (apostrophe) sont en fait des ` (accent grave), mais lors du copier-coller, il y a eu changement. Le fait de mettre des accent grave revient au meme que d'utiliser str().

    Et encore merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 52
    Points : 55
    Points
    55
    Par défaut
    Mais je t'en prie!

    Par contre, je suis pas un mega-habitué pour dire ça, mais bon, il faut mettre la banière quand tu as résolu ton problème!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/02/2014, 12h20
  2. Réponses: 2
    Dernier message: 20/11/2011, 16h17
  3. Réponses: 1
    Dernier message: 10/02/2011, 15h32
  4. [MySQL] recuperer une valeur dans une liste deroulante pour l'utiliser dans une seconde liste
    Par tortue_22 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 12/05/2010, 11h50
  5. valeur d'un champ pour l'utiliser dans une requete
    Par bachilbouzouk dans le forum ASP
    Réponses: 4
    Dernier message: 08/04/2005, 16h58

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