Il existe plusieurs événements qui peuvent déclencher l'exécution d'une fonction, par exemple :
Concentrons-nous pour le moment sur les plus fréquents : un clic sur un bouton et une touche de clavier appuyée.
Lorsqu'une interface graphique contient un bouton, il faut indiquer au programme quoi faire quand le bouton sera cliqué.
On lui fournira le nom de la fonction à exécuter, sans les parenthèses.
Il existe différentes techniques pour y arriver :
bouton = Button(fenetre, text='Soumettre', command=ma_fonction)
bouton.configure(command=ma_fonction)
fenetre.bind('<Button-1>', ma_fonction)
Dans tous les cas, il est possible d'utiliser une fonction existante dans Python (ex : fenetre.destroy) ou encore de coder notre propre fonction.
Une fonction associée au paramètre command ne recevra pas de paramètre. Une fonction assiciée avec bind() recevra le paramètre event.
Le paramètre, s'il y a lieu, ne sera écrit que lors de la définition de la fonction. Dans l'instuction qui associe la fonction à un événement, seul le nom de la fonction sera écrit, sans apostrophes ni guillemets ni parenthèses.
Il est à noter que la fonction doit être déclarée AVANT de pouvoir être utilisée. Elle sera donc déclarée dans le haut du fichier.
Ex :
#!/usr/bin/env python
from tkinter import *
from tkinter import messagebox
def cliquer_click():
"""Affiche un message indiquant que le bouton a été cliqué."""
messagebox.showinfo('Information', 'Le bouton a été cliqué !')
########## programme principal ##########
# fenêtre principale
fenetre = Tk()
# bouton
bouton = Button(fenetre, text='Cliquer ici !', command=cliquer_click)
bouton.pack()
# la fenêtre s'affiche puis attend les interactions de l'usager
fenetre.mainloop()
Il est possible d'associer du code à une touche de clavier à l'aide de bind() en utilisant le code de la touche désirée, placé entre chevrons (<>).
La fonction devra recevoir un paramètre de type Event, que l'on nommera généralement event.
Ex :
#!/usr/bin/env python
from tkinter import *
from tkinter import messagebox
def touche_entree(event):
"""Affiche un message indiquant que la touche Entrée a été pressée."""
messagebox.showinfo('Information', 'La touche Entrée a été pressée !')
########## programme principal ##########
# fenêtre principale
fenetre = Tk()
fenetre.bind('<Return>', touche_entree)
...
# la fenêtre s'affiche puis attend les interactions de l'usager
fenetre.mainloop()
« Événements: répondre aux actions de l’utilisateur ». Tkinter pour ISN. http://tkinter.fdex.eu/doc/event.html
« Events and Bindings ». effbot.org. http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm
▼Publicité