16.1.6.7 Binding ed eventi

Il metodo collegato al comando di un widget permette di monitorare certi eventi e di far scattare la chiamata ad una funzione quando accade quel tipo di evento. La forma del metodo bind è:

    def bind(self, sequence, func, add=''):
dove:

sequence
è una stringa che indica il tipo di evento considerato. Vedere la pagina di manuale di bind e la pagina 201 del testo di John Ousterhout per i dettagli.

func
è una funzione Python, che prende un argomento e che viene chiamata quando l'evento accade. Un'istanza di Event verrà passata come argomento. Le funzioni utilizzate in questo modo sono, di solito, dette callbacks.

add
è facoltativa, può valere "" o "+". Passando una stringa vuota questo binding (NdT: legame) sostituirà ogni altro binding che è associato a questo evento. Passando la stringa "+" si indica che la funzione va aggiunta alla lista delle funzioni collegate a questo tipo di evento.

Per esempio:

    def turnRed(self, event):
        event.widget["activeforeground"] = "red"

    self.button.bind("<Enter>", self.turnRed)

Notare come qui si accede al campo widget di event nella chiamata turnRed(). Questo campo contiene il widget che ha intercettato l'evento nell'interfaccia grafica. La seguente tavola elenca gli altri campi di event a cui si può accedere e come sono indicati in Tk, cosa che può essere utile quando si fa riferimento alle pagine di manuale di Tk.

Tk      Campi Evento Tkinter            Tk      Campi Evento Tkinter 
--      --------------------            --      --------------------
%f      focus                           %A      char
%h      height                          %E      send_event
%k      keycode                         %K      keysym
%s      state                           %N      keysym_num
%t      time                            %T      type
%w      width                           %W      widget
%x      x                               %X      x_root
%y      y                               %Y      y_root

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.