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 :

Tkinter.Button : passer et récupérer des valeurs


Sujet :

Tkinter Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 123
    Par défaut Tkinter.Button : passer et récupérer des valeurs
    Hugh !

    une petite question à propos de Tkinter. J'ai simplifié mon code pour exprimer mon problème. Alors forcément, ne cherchez pas un sens profond à ce qui va suivre !

    Voici mon code actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import Tkinter
    import Pmw
     
    def fonction(value=0):
        print value
        return value+2
     
    interface=Pmw.initialise()
     
    button1=Tkinter.Button(interface,text='Fonction',command=fonction)
    button1.grid(row=1,column=3,padx=8,pady=6)
     
    interface.mainloop()
    Pour l'instant, à chaque fois que je clique sur le bouton, il s'affiche 0, normal : je passe pas d'argument donc ça prend la valeur par défaut 0 et ça l'affiche. De même le return sert à rien, puisque je le récupère pas.

    J'aimerais en fait qu'il s'affiche 2,4,6,8,...

    En clair : comment faire passer des arguments à la fonction associé au bouton (avec lambda j'imagine), et comment récupérer ce qu'elle renvoie ?

    Merci de votre aide !

    PS : en vrai, j'ai beaoin de créer un bouton "Read database" qui appelle une fonction lisant une base de donnée, cette même fonction renvoyant le contenu de sa lecture.

  2. #2
    Membre éclairé
    Avatar de yorukaze
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 285
    Par défaut
    Salut l'ami,

    en fait pour afficher quelque chose, il faut passer la valeur a afficher en parametre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import Tkinter
    import Pmw
     
    def fonction(value):
        print value
        return value+2
     
    interface=Pmw.initialise()
     
    button1=Tkinter.Button(interface,text='Fonction',lambda:command=fonction(2))
    button1.grid(row=1,column=3,padx=8,pady=6)
     
    interface.mainloop()
    Voila un bout de code. Verifie la syntaxe avec lambda je suis pas sur mais globalement:
    - tu definies ta fonction et en parametre la variable value.
    - tu appels la fonction et en parametre tu passe un nombre.
    - ta fonction va prendre la veleur passée en argument pour travailler avec.

    Ici si tu passes 2, ton programme va afficher 2 et retourner 4.
    Pour changer la valeur, modifie la varaiable passée en parametre de la fonction.

    J'ai été clair ou pâs?
    N'hésite pas à questionner...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 123
    Par défaut
    Merci,

    mais j'ai trouvé comment régler et le passage d'argument ET la récupération des valeurs de la fonction en un seul coup sans utiliser de global.

    Il faut utiliser le tout dans une classe, qui permet alors de disposer d'un espace de noms commun (les self.*).

    Merci quand même

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Par défaut
    Salut!

    Je rencontre à peu près le même problème que toi je pense.
    Je veux que, quand l'utilisateur appuie sur un bouton, il appelle une fonction qui va modifier une variable initiale autant de fois que de clics sur ledit bouton.(Comme ton bout de code quoi).
    Par contre je ne sais pas ce qu'est une classe en python...et encore moins un self.
    Tu pourrais me montrer ta solution en reprenant ton exemple s'il te plaît?

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Voilà qui devrait t'en apprendre plus au sujet des classes (Chapitre 11 : Classes, objets, attributs dans le tuto Apprendre à programmer avec Python de Swinnen) : http://python.developpez.com/cours/T...Chapitre11#L11

+ 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écupérer des valeurs dans des fichiers html
    Par nico93100 dans le forum Langage
    Réponses: 1
    Dernier message: 05/01/2006, 21h46
  3. récupérer des valeurs de variables de pages en pages
    Par harlock59 dans le forum Langage
    Réponses: 6
    Dernier message: 19/12/2005, 12h04
  4. Récupérer des valeurs de checkbox dans MySQL
    Par digger dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 05/09/2005, 14h58
  5. [VB.NET] [ODBC] Récupérer des valeurs avec requête ODBC?
    Par Pleymo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/03/2005, 16h38

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