FAQ pythonConsultez toutes les FAQ

Nombre d'auteurs : 11, nombre de questions : 188, dernière mise à jour : 23 mai 2009  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions posées sur le forum Python complétées par d'autres questions qui pouvaient nous sembler intéressantes de traiter. Toutefois il se peut que les réponses apportées contiennent des erreurs, imprécisions ... Vous pouvez dans ce cas contacter un des membres de la rédaction pour lui faire part de vos remarques.

L'équipe Python de Developpez.


SommaireGUITkinter / Tix / PmwTkinterButton (2)
précédent sommaire suivant
 

Une première méthode est de renseigner l'attribut command du widget Tk.Button. Cet attribut est associé à une fonction sans paramètre. Il est important de ne pas mentionner les void () lors de cette association.
On peut également utiliser la fonction bind, cf Comment associer un évènement clavier/souris à un widget ? .

Code python :



1
2
3
4
5
6
7
8
9
import Tkinter as Tk 
  
def clic(): 
    print 'Clic gauche sur le bouton' 
  
root = Tk.Tk() 
button = Tk.Button(root, text = 'toto', command = clic) 
button.pack() 
root.mainloop()

Mis à jour le 14 juin 2005 Guigui_

Le passage d'arguments à l'action associée à un Tkinter.Button peut être utile si vous avez plusieurs Button qui pointent sur la même fonction ou encore que la fonction appelée par le clic sur le bouton ait besoin d'un argument que celle-ci ne peut connaître d'elle-même. Par défaut, le paramètre command d'un Button nécessite une fonction sans argument. Vous pouvez cependant utiliser les fonctions lambdas pour passer des arguments supplémentaires. La syntaxe d'une expression lambda est la suivante:
mafonction = lambda argument:expressionargument est la liste des arguments de ma fonction et expression l'expression retournée par la fonction.
exemple:

Code python :



1
2
3
4
5
6
7
f1 = lambda x: x + 5 
print f1(9) ## 14 
f2 = lambda x, y = 5: x * y 
f2(6) ## 30 
def multiplie(x, y): print x * y 
f3 = lambda x, y:multiplie(x, y) 
f3(7, 3) ## 21
Pour utiliser les expressions lambda avec un Button, les arguments devront obligatoirement avoir une valeur par défaut vu que le clic sur un bouton ne peut apporter de valeurs aux paramètres de l'expression lambda. Si vous voulez pouvoir modifier ces valeurs aux cours du programme il faudra soit utiliser des variables modifiables soit redéfinir le paramètre command

Code python :



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import Tkinter as Tk 
  
def AfficheLabel(txt): 
    label.config(text = txt) 
  
root = Tk.Tk() 
label = Tk.Label(root, text = "Clic sur le bouton ") 
label.grid(row = 0, column = 0, columnspan = 3) 
svEntry = Tk.StringVar() 
edit = Tk.Entry(root, textvariable = svEntry) 
edit.grid(row = 1, columnspan = 3) 
btn1 = Tk.Button(root, text = "Button1", command = lambda x=1:AfficheLabel("Clic sur le bouton "+str(x))) 
btn2 = Tk.Button(root, text = "Button2", command = lambda x=2:AfficheLabel("Clic sur le bouton "+str(x))) 
btn3 = Tk.Button(root, text = "Button3", command = lambda x=svEntry:AfficheLabel("valeur de l'entry: "+x.get())) 
btn1.grid(row = 2, column = 0) 
btn2.grid(row = 2, column = 1) 
btn3.grid(row = 2, column = 2) 
  
root.mainloop()

Mis à jour le 9 juin 2007 Guigui_

Proposer une nouvelle question/réponse à la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2014 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
 
 
 
Partenaires

PlanetHoster
Ikoula