Tkinter tutorial - Combobox

  1. Python Tkinter Combobox-voorbeeld
  2. Tkinter Combobox-gebeurtenisbinding
  3. 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()

Tkinter Tutorial Combobox Basic

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.

Tkinter Tutorial Combobox postcommando