Tkinter tutorial - Combobox
- Python Tkinter Combobox-voorbeeld
- Tkinter Combobox-gebeurtenisbinding
- Tkinter Combobox werkt waarden dynamisch bij

Tkinter Combobox is de vervolgkeuzelijst waaruit de gebruiker kan kiezen. Het is een combinatie van Entry
en drop-down
widgets zoals je kunt zien. Wanneer u op de pijl aan de linkerkant klikt, ziet u een vervolgkeuzemenu met alle keuzes. Als u op een pijl klikt, wordt de huidige Entry
inhoud vervangen.
Python Tkinter Combobox-voorbeeld
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
Tkinter combobox-widget zit in de ttk
module van Tkinter, daarom moet u deze module importeren om deze widget te gebruiken.
comboExample = ttk.Combobox(app,
values=[
"January",
"February",
"March",
"April"])
Het maakt de Tkinter-combobox-widgetinstantie en wijst ook de waarden toe die worden weergegeven in de vervolgkeuzelijst.
comboExample.current(1)
Normaal gesproken is het standaarditem dat in de combobox wordt weergegeven het eerste element in de lijst met waarden. Je kan het ook in elk element wijzigen met behulp van de current(index)
methode.
print(comboExample.current(), comboExample.get())
Je kan ook gebruiken current()
om de index van het huidige geselecteerde element get()
te krijgen en de methode gebruiken om het element zelf te krijgen.
Tkinter Combobox-gebeurtenisbinding
De combobox callback functie binding verschilt van de widgets die in de laatste hoofdstukken zijn geïntroduceerd. bind()
methode is de manier om de callback-functie te binden met de virtuele gebeurtenis combobox wanneer de gebruiker een element in de vervolgkeuzelijst selecteert.
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")
Dit is de gedefinieerde callback-functie wanneer u een element uit de lijst selecteert.
Notitie
event
wordt niet overgeslagen als het passerende argument, het wordt doorgegeven vanuit de virtuele gebeurtenis combobox
comboExample.bind("<<ComboboxSelected>>", callbackFunc)
Het bindt de virtuele gebeurtenis <<ComboboxSelected>>
met de callback-functie.
Telkens wanneer u een nieuw element in de lijst selecteert, wordt dit afgedrukt New Element Selected
.
Tkinter Combobox werkt waarden dynamisch bij
De keuzelijst in de Tkinter-combobox kan dynamisch worden bijgewerkt met de optie postcommand
die de gegeven functie uitvoert voordat de keuzelijst met keuzemogelijkheden wordt weergegeven.
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()
De changeMonth
functie verandert de keuzelijst met keuzelijsten
["July",
"August",
"September",
"October"
]
De combobox wordt leeg weergegeven nadat de GUI is gestart en geeft de opgegeven maanden weer zoals hierboven nadat de gebruiker op de pijl in de combobox heeft geklikt.
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