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 :

parametre dans button command


Sujet :

Tkinter Python

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 306
    Par défaut parametre dans button command
    Bonjour,

    J'ai un problème basic mais que je ne suis pas capable de résoudre.
    J'ai une fenêtre avec un text et un bouton. J'aimerai qu'au click du bouton il déclenche ma fonction en lui passant la valeur dans le text puis remettre à vide la zone texte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    texte.pack(side=Tkinter.LEFT)
    	saisir=Tkinter.StringVar() # prevoir la variable pour recevoir le texte saisi
    	saisie=Tkinter.Entry(textvariable=saisir, width=30)
    	saisie.pack()
    	bouton=Tkinter.Button(racine, text="OK", command=save(saisir.get()))
    	bouton.pack(side=Tkinter.BOTTOM)
     
    def save(param):
        print param
        saisie.delete(0)
    là ça ne supprime qu'un seul caractère et le param est vide

    Merci de vos futures solutions

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bouton=Tkinter.Button(racine, text="OK", command=lambda: save(saisir.get()))

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir,

    Ok pour lambda, faites une recherche sur le sous forum Tkinter sur ce mots clé et vous aurez pas mal d'infos.

    Par contre pourquoi utiliser la classe variable Tkinter, écraser son nom dans l'espace de nom etc etc etc...
    Enfin, vous comprendrez que c'est bien embrouillé tout cela.
    Une correction de code pour vous aider
    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
    # -*- coding: utf-8 -*-
    #
    #
    #
    try:
        import Tkinter as Tk # Python 2.x
    except:
        import tkinter as Tk # Python 3.x
     
    racine = Tk.Tk()
     
    def save(): # On déclare les fonctions avant de la utiliser. Comprendre command=save.
        print(valsaisir.get()) # Pour la classe variable Tkinter get()/set(). Le print() c'est pour la compatibilité Python2/3
        saisie.delete(0, Tk.END) # De l'index 0 à la fin. La fin est donnée par Tk.END
     
    valsaisir = Tk.StringVar() # Et non saisi puisque le nom de variable est utiliser juste après
    saisie = Tk.Entry(textvariable=valsaisir, width=30)
    saisie.pack()
    saisie.focus_set() # Bonus
    Tk.Button(racine, text="OK", command=save).pack()
    # Pas besoin de nommer le widget puisque seul command=/text= nous interessent.
    # Pas besoin du side=Tk.BOTTOM puisque c'est dans l'ordre des .pack()
     
    racine.mainloop()
    Bonne découverte et @+

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 306
    Par défaut
    Merci pour vos reponses.

    Tant que j y suis cmt je fais pour fermer la fenetre (racine)

  5. #5
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Re,

    Un exemple
    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
    # -*- coding: utf-8 -*-
    #
    #
    #
    try:
        import Tkinter as Tk
    except:
        import tkinter as Tk
     
    racine = Tk.Tk()
    racine.title('Test pour bender86')
     
    def save():
        print(valsaisir.get())
        saisie.delete(0, Tk.END)
     
    valsaisir = Tk.StringVar()
    saisie = Tk.Entry(textvariable=valsaisir, width=30)
    saisie.pack(padx=5, pady=5)
    saisie.focus_set()
    Tk.Button(racine, text="OK", command=save).pack(side=Tk.LEFT, padx=5, pady=5)
    Tk.Button(racine, text="Quit", command=racine.quit).pack(side=Tk.RIGHT, padx=5, pady=5)
     
    racine.mainloop()
    Pourquoi ne pas suivre un tuto ?

    @+

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 306
    Par défaut
    Merci bien pour ton aide,

    On se recroisera sûrement pour de nouvelles questions

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

Discussions similaires

  1. [XSL-FO] parametres -r dans la commande FOP
    Par caballo dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 07/03/2012, 17h21
  2. [X] Utilisation des listes de parametres dans les commandes
    Par axel-erator dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 29/06/2007, 12h00
  3. [langage] Passage de paramètres dans une fonction
    Par And_the_problem_is dans le forum Langage
    Réponses: 11
    Dernier message: 28/06/2004, 08h20
  4. Réponses: 5
    Dernier message: 12/05/2004, 16h37
  5. Mettre a jour les Parametres dans une requete SQL
    Par Tartar Ukid dans le forum C++Builder
    Réponses: 7
    Dernier message: 31/03/2004, 13h51

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