1. Checkbox (Checkbutton
)
Il checkbox è un pulsante quadrato che può essere selezionato o deselezionato. È utile quando serve offrire all'utente una scelta tra una o più opzioni tra quelle disponibili.
Creazione di un checkbox
Per creare un checkbox, utilizza il widget Checkbutton
. Per monitorare lo stato del checkbox (selezionato o no), si utilizza
una variabile IntVar
, che assume il valore 1
se il checkbox è selezionato, altrimenti 0
.
import tkinter as tk
# Funzione per verificare lo stato del checkbox
def show_status():
print("Attivo" if var.get() == 1 else "Disattivo")
# Creazione di una finestra
root = tk.Tk()
root.title("Esempio con checkbox")
# Variabile per monitorare lo stato
var = tk.IntVar()
# Checkbox con associazione alla variabile var
checkbox = tk.Checkbutton(root, text="Abilita opzione", variable=var, command=show_status)
checkbox.pack(pady=20)
root.mainloop()
Spiegazione del codice
-
variable=var
: Associa il checkbox alla variabilevar
, che si aggiorna ogni volta che lo stato del checkbox cambia. -
Funzione
show_status()
: Stampa sulla console lo stato attuale del checkbox. Se il checkbox è selezionato, mostra "Attivo", altrimenti "Disattivo".
Utilizzo di più checkbox
Se hai bisogno di opzioni indipendenti, puoi creare più checkbox, ognuno associato alla sua variabile.
# Variabili per monitorare gli stati
option1 = tk.IntVar()
option2 = tk.IntVar()
# Checkbox
check1 = tk.Checkbutton(root, text="Opzione 1", variable=option1)
check2 = tk.Checkbutton(root, text="Opzione 2", variable=option2)
check1.pack()
check2.pack()
2. Radio button (Radiobutton
)
I radio button sono un gruppo di pulsanti rotondi, tra i quali l'utente può selezionare solo una opzione. Sono utili quando bisogna offrire una scelta unica tra più possibilità.
Creazione di radio button
Per creare i radio button, utilizza il widget Radiobutton
. Per collegare i radio button e renderli interdipendenti,
devono essere tutti associati alla stessa variabile (IntVar
o StringVar
).
# Funzione per mostrare la scelta selezionata
def show_choice():
print(f"Opzione scelta: {choice.get()}")
# Variabile per monitorare la selezione
choice = tk.IntVar()
# Radio button
radio1 = tk.Radiobutton(root, text="Opzione 1", variable=choice, value=1, command=show_choice)
radio2 = tk.Radiobutton(root, text="Opzione 2", variable=choice, value=2, command=show_choice)
radio3 = tk.Radiobutton(root, text="Opzione 3", variable=choice, value=3, command=show_choice)
radio1.pack()
radio2.pack()
radio3.pack()
Spiegazione del codice
-
variable=choice
: Associa tutti i radio button alla stessa variabilechoice
, rendendoli così interdipendenti. -
value
: Determina il valore che la variabilechoice
assume quando l'utente seleziona quel radio button. -
Funzione
show_choice()
: Mostra sulla console l'opzione selezionata.
Radio button con valori testuali
Puoi anche associare i radio button a una variabile di tipo StringVar
,
per utilizzare valori testuali.
# Variabile per la selezione del testo
color_choice = tk.StringVar()
# Radio button con valori testuali
radio_red = tk.Radiobutton(root, text="Rosso", variable=color_choice, value="Red")
radio_blue = tk.Radiobutton(root, text="Blu", variable=color_choice, value="Blue")
radio_green = tk.Radiobutton(root, text="Verde", variable=color_choice, value="Green")
radio_red.pack()
radio_blue.pack()
radio_green.pack()
3. Spinbox (Spinbox
)
Lo spinbox consente all'utente di scegliere un valore numerico da un intervallo. Questo widget è utile per inserire valori numerici come età o quantità.
Creazione di uno spinbox
In Tkinter, uno spinbox si crea con il widget Spinbox
, che consente all'utente sia di digitare manualmente un valore, sia di sceglierlo tramite le frecce.
# Funzione per mostrare il valore selezionato
def show_spin_value():
print(f"Valore: {spin.get()}")
# Spinbox da 1 a 10
spin = tk.Spinbox(root, from_=1, to=10, command=show_spin_value)
spin.pack(pady=20)
Spiegazione del codice
from_
eto
: Determinano l'intervallo di valori per lo spinbox.- Funzione
show_spin_value()
: Mostra il valore selezionato nella console ogni volta che viene modificato.
GO TO FULL VERSION