Un bouton est associé à une fonction (fréquemment nommée "callback" dans les tutoriels, forums…).
Syntaxe du widget Button : nom_variable = ttk.Button(cible, text=chaîne, command=callback)
.
Noter l'absence de parenthèses après le nom de la fonction : command=callback
et non pas command=callback(). Dans le cas contraire, la fonction est appelée dès la création du bouton, l'action est donc déclenchée instantanément…
Il est bien sûr possible d'associer une fonction quelconque à un bouton.
Il est parfois indispensable (cf. "Evénements" dans la suite de ce tutoriel) de transmettre un paramètre au moment de l'appel de la fonction, on contourne donc la restriction précédente en utilisant une fonction lambda définie à la volée.Button(cible, text=chaîne, command=lambda x : fonction(x))
.
On peut bien sûr utiliser plusieurs paramètres avec cette méthode.
Il est possible de désativer ou d'activer un bouton :
nom_bouton.state(['disabled']) ou nom_bouton.state(['!disabled'])
.
Créer l'interface suivante.
Noter, comme pour tout widget :
fill
et expand
permettent des réglage supplémentaires (redimensionner la fenêtre pour constater leurs effets).Noter l'utilisation de fonctions lambda dans le but de transmettre un paramètre : command=lambda x=-10 : bougeDisque(x)
.
Remarque :
il aurait été possible de créer deux fonctions bougeGauche() et bougeDroite(), sans paramètres et d'utiliser command=bougeGauche
pour le premier bouton.
Il est possible de placer des symboles sur les boutons en utilisant le codage UTF-8 (cf. ce lien,
liquer sur un symbole pour voir le codage Python). Par exemple, le symbole ⇦ est codé en Python par u"\u21E6" ou "\u21E6" : text=u"\u21E6"
est utilisable.
Pour information, le "u" signifie "codage utf-8", l'antislash ou backslash "\" est un caractère d'échappement qui signale à l'interpréteur Python que le caractère qui suit ne doit pas être pris
en compte : le codage du caractère est 21E6 en hexadécimal (base 16).