Pas le même tuto j’espère. Il y a un paramètre pour lier une fonction à un bouton sans utiliser bind. C’est le paramètre command. Il prend le nom de la fonction sans les parenthèses. Et si jamais tu as besoin d’utiliser des paramètres de la fonction, tu as la méthode partial du module functools.
Et si jamais tu as besoin d’utiliser des paramètres de la fonction, tu as la méthode partial du module functools.
Effectivement, je n'ai jamais utilisé cette «astuce» mais il se trouve que cela peut servir dans des situations pas forcément exceptionnelles. Je reprends un exemple sur mon site où lorsqu'on clique sur un bouton, le numéro du bouton cliqué est dessiné dans un canevas :
et dont le code est :
from tkinter import *
SIZE=200
NBUTTONS=5
root = Tk()
cnv = Canvas(root, width=SIZE, height=SIZE, background="ivory")
cnv.grid(row=0,columnspan=NBUTTONS)
def make_clic(nro):
def clic():
cnv.delete(ALL)
cnv.create_text(SIZE/2, SIZE/2, text=nro, font="Arial 90 bold")
return clic
for i in range(NBUTTONS):
btni=Button(root, text=i, command=make_clic(i))
btni.grid(row=1, column=i)
root.mainloop()
On peut alors le remplacer par :
from tkinter import *
from functools import partial
SIZE=200
NBUTTONS=5
root = Tk()
cnv = Canvas(root, width=SIZE, height=SIZE, background="ivory")
cnv.grid(row=0,columnspan=NBUTTONS)
def clic(nro):
cnv.delete(ALL)
cnv.create_text(SIZE/2, SIZE/2, text=nro, font="Arial 90 bold")
for i in range(NBUTTONS):
btni=Button(root, text=i, command=partial(clic,i))
btni.grid(row=1, column=i)
root.mainloop()
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Blond, bouclé, toujours le sourire aux lèvres...
Découverte Python Doc Tkinter Les chaînes de caractères
Découverte Python Doc Tkinter Les chaînes de caractères