TKinter
Les fonctions
Lambda
Python permet de définir des mini-fonctions
d’une ligne à la volée. Ces fonctions sont dites
"lambda" et peuvent être employées partout où
une fonction est nécessaire.
Exemple de fonctions
lambda
def f(x):
return x*2
f(3) --->
6
g = lambda x: x*2
g(3)
---> 6
lambda x=3: x*2
---> 6
Les fonctions lambda font la même
chose que la fonction du début.
Notez la syntaxe condensée
: il n’y a pas de parenthèses autour de la liste
d’arguments et le mot-clé return est manquant (il est
implicite, la fonction complète ne pouvant être qu’une
seule expression).
Remarquez aussi que la fonction n’a pas
de nom, mais qu’elle peut être appelée à
travers la variable à laquelle elle est assignée.
Vous
pouvez utiliser une fonction lambda sans l’assigner à
une variable.
Les fonctions lambda ne peuvent pas contenir de
commandes et elles ne peuvent contenir plus d’une expression.
N’essayez pas de mettre trop de choses dans une fonction
lambda, si vous avez besoin de quelque chose de complexe, définissez
plutôt une fonction normale.
Ces fonctions sont surtout
utiles pour faire des programmes avec Tkinter.
Un objet graphique
n'accepte comme commande que des fonctions sans
argument:
Exemple:
Button(fenetre1, texte="mon
bouton", command=mafonction)
Si vous voulez appeler une
fonction avec des arguments, la solution consiste à utiliser
une fonction lambda qui elle-même appele une fonction classique
avec des arguments:
Exemple:
macommande =
lambda x="mon_argument": mafonction(x)
Button(fenetre1,
texte="mon bouton", command=macommande)
La
fonction eval
eval est une fonction souvent utilisée
dans plusieurs langages.
L'argument passé à eval est
évalué par le programme, c'est à dire que le
contenu est considéré comme une instruction a
executer.
Exemple:
var = "2 + 3"
print var
-----> print '2 + 3'
print eval(var)
-----> 5
Exercice -
Calculatrice
Réaliser une calculatrice simple,
comme celle intégrée à Windows.
Affichez une
boite entry dans laquelle vous pourrez mettre vos opérations.
Le résultat sera également affiché dans cette
boite
Affichez les boutons suivants: les 10 chiffres, +, -, *, /.
En cliquant sur un de ces boutons, le texte correspondant doit se
mettre dans la boite entry.
Puis, mettre les boutons: C (pour
reinitialier l'affichage), = (pour afficher le résultat)
Les
boutons devront appeler une fonction qui exécutera la bonne
action pour chacun d'eux.
Quelques conseils utiles (mais pas
forcément indispensables):
Pour assigner une commande à
vos boutons, vous aurez probablement besoin de fonctions
"lambda"
Pour calculer le résultat d'une
opération, vous aurez besoin de "eval"
Enfin, les
erreurs doivent être gérées (par exemple si une
lettre est entrée manuellement par l'utilisateur). Un message
d'erreur doit alors s'afficher.