Tkinter Tutorial - Combobox
- Esempio di Combobox Python Tkinter
- Tkinter Combobox Event Binding
- Tkinter Combobox Aggiorna dinamicamente i valori
- Tkinter Combobox Sola lettura

Tkinter Combobox è l’lista a discesa tra cui l’utente può scegliere. È una combinazione di Entry
e di widget drop-down
come si può vedere. Quando si clicca la freccia sul lato sinistro, si vedrà un menu a tendina che mostra tutte le scelte, e se si clicca su uno di essi, sostituirà gli attuali contenuti di Entry
.
Esempio di Combobox Python Tkinter
import tkinter as tk from tkinter import ttk app = tk.Tk() app.geometry("200x100") labelTop = tk.Label(app, text="Choose your favourite month") labelTop.grid(column=0, row=0) comboExample = ttk.Combobox(app, values=["January", "February", "March", "April"]) pprint(dict(comboExample)) comboExample.grid(column=0, row=1) comboExample.current(1) print(comboExample.current(), comboExample.get()) app.mainloop()
from tkinter import ttk
Il widget della combobox Tkinter è nel modulo ttk
di Tkinter, quindi è necessario importare questo modulo per utilizzare questo widget.
comboExample = ttk.Combobox(app, values=["January", "February", "March", "April"])
Esso crea l’istanza del widget della combobox Tkinter e assegna anche i valori che appariranno nell’lista a discesa.
comboExample.current(1)
Normalmente, l’elemento predefinito che appare nella combobox è il primo elemento della lista dei valori. Si può anche cambiarlo in qualsiasi elemento usando il metodo current(index)
.
print(comboExample.current(), comboExample.get())
Si potrebbe anche usare current()
per ottenere l’indice dell’elemento selezionato correntemente, e usare il metodo get()
per ottenere l’elemento stesso.
Tkinter Combobox Event Binding
La funzione di richiamo della combobox è diversa dai widget introdotti negli ultimi capitoli. Il metodo bind()
è il modo di legare la funzione callback con l’evento virtuale della combobox quando l’utente seleziona un elemento nella lista a discesa.
import tkinter as tk from tkinter import ttk def callbackFunc(event): print("New Element Selected") app = tk.Tk() app.geometry("200x100") labelTop = tk.Label(app, text="Choose your favourite month") labelTop.grid(column=0, row=0) comboExample = ttk.Combobox(app, values=["January", "February", "March", "April"]) comboExample.grid(column=0, row=1) comboExample.current(1) comboExample.bind("<<ComboboxSelected>>", callbackFunc) app.mainloop()
def callbackFunc(event): print("New Element Selected")
Questa è la funzione di callback definita ogni volta che si seleziona un elemento dalla lista.
comboExample.bind("<<ComboboxSelected>>", callbackFunc)
Lega l’evento virtuale <<ComboboxSelected>>
con la funzione di callback.
Ogni volta che si seleziona un nuovo elemento dalla lista, stampa New Element Selected
.
Tkinter Combobox Aggiorna dinamicamente i valori
L’lista delle scelte nella combobox di Tkinter potrebbe essere aggiornato dinamicamente con l’opzione postcommand
che esegue la funzione data prima di visualizzare l’lista a comparsa delle scelte.
import tkinter as tk from tkinter import ttk def callbackFunc(event): print("New Element Selected") app = tk.Tk() app.geometry("200x100") def changeMonth(): comboExample["values"] = ["July", "August", "September", "October"] labelTop = tk.Label(app, text="Choose your favourite month") labelTop.grid(column=0, row=0) comboExample = ttk.Combobox( app, values=["January", "February", "March", "April"], postcommand=changeMonth ) comboExample.grid(column=0, row=1) app.mainloop()
La funzione changeMonth
cambia l’lista delle scelte nella combobox per essere
["July", "August", "September", "October"]
La combobox mostra vuoto dopo l’avvio dell’interfaccia grafica e mostra i mesi indicati come sopra dopo che l’utente ha cliccato la freccia nella combobox.
Tkinter Combobox Sola lettura
Il contenuto degli elementi negli esempi di Combobox mostrati sopra è modificabile perché il state
predefinito è normale
che rende il campo di testo direttamente modificabile.
Tkinter Combobox ha gli altri due stati oltre a normal
,
readonly
- il campo di testo non è modificabile, e l’utente può selezionare solo i valori dall’lista a discesa.disabled
- la Combobox è in grigio e l’interazione è impossibile.
import tkinter as tk from tkinter import ttk app = tk.Tk() app.geometry("200x100") labelTop = tk.Label(app, text="Choose your favourite month") labelTop.grid(column=0, row=0) comboExample = ttk.Combobox( app, values=["January", "February", "March", "April"], state="readonly" ) comboExample.grid(column=0, row=1) comboExample.current(0) print(comboExample.current(), comboExample.get()) app.mainloop()
L’esempio sopra riportato imposta la Combobox Tkinter in sola lettura.
Se si cambia lo stato da readonly
a disabled
, la Combobox è in grigio come mostrato sotto.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook