Tkinter Tutorial - Pulsante

  1. Opzione default del pulsante Tkinter
  2. Tkinter Comando del pulsante Callback

Il widget del pulsante Tkinter è abbastanza simile al widget Tkinter Label. Ha quasi le stesse opzioni di quelle dell’etichetta, tranne che ha un’opzione extra default. Daremo i dettagli di questo default dopo un esempio di pulsante di base.

Si possono generare due pulsanti più semplici usando i codici demo qui sotto.

Tkinter Button_Basic.py
from sys import version_info
if version_info.major == 2:
    import Tkinter as tk
elif version_info.major == 3:
    import tkinter as tk
    
app = tk.Tk()
button1 = tk.Button(app, text="Python Label 1")
button2 = tk.Button(app, text="Python Label 2")
button1.pack(side=tk.LEFT)
button2.pack(side=tk.LEFT)
app.mainloop()

La finestra con due pulsanti adiacenti mostra dopo aver eseguito i codici.

Tkinter Tutorial_Etichetta di base

Opzione default del pulsante Tkinter

L’opzione default in button dice che il pulsante è il pulsante predefinito nella GUI, per esempio, quello che viene invocato automaticamente quando l’utente preme il tasto Enter o Return.

Tkinter Comando del pulsante Callback

L’opzione command richiama la funzione di richiamo quando si preme il pulsante.

Tkinter Button_command callback.py
from sys import version_info
if version_info.major == 2:
    import Tkinter as tk
elif version_info.major == 3:
    import tkinter as tk
    

    
app = tk.Tk()
labelExample = tk.Button(app, text="0")

def change_label_number():
    counter = int(str(labelExample['text']))
    counter += 1
    labelExample.config(text=str(counter))
    
buttonExample = tk.Button(app, text="Increase", width=30,
                          command=change_label_number)

buttonExample.pack()
labelExample.pack()
app.mainloop()

Crea un pulsante e un widget per le etichette nella finestra principale. Il numero nel testo dell’etichetta viene aumentato di 1 ogni volta che si fa clic sul pulsante.

Tkinter Tutorial_Button Command Callback

def change_label_number():
    counter = int(str(labelExample['text']))
    counter += 1
    labelExample.config(text=str(counter))

Il change_label_number è la funzione invocata quando si fa clic sul pulsante. Esso ottiene il numero di etichetta e poi imposta l’etichetta aumentata di uno.

buttonExample = tk.Button(app, text="Increase", width=30,
                          command=change_label_number)

Costruisce il legame tra il pulsante e la sua funzione di richiamo.

Tkinter Button Command Callback Funzione di richiamo del pulsante con argomenti

Avete bisogno di un oggetto partial di functools se avete bisogno di passare argomenti alle funzioni di callback. Gli oggetti partial sono oggetti callabili con gli argomenti posizionali arg e gli argomenti di parole chiave keywords.

Di seguito un frammento di codice mostra come usare questa funzione partial nel comando del pulsante.

def change_label_number(num):
    counter = int(str(labelExample['text']))
    counter += num
    labelExample.config(text=str(counter))
    
buttonExample = tk.Button(app, text="Increase", width=30,
                          command=partial(change_label_number, 2))