Tkinter Tutorial - Combobox

Jinku Hu 3 Januar 2023
  1. Python Tkinter Combobox Beispiel
  2. Tkinter Combobox Ereignis-Bindung
  3. Tkinter Combobox Dynamische Aktualisierung der Werte
Tkinter Tutorial - Combobox

Tkinter Combobox ist die Dropdown-Liste, aus der der Benutzer wählen kann. Es ist eine Kombination aus Entry und drop-down Widgets, wie Sie sehen können. Wenn Sie auf den Pfeil auf der linken Seite klicken, sehen Sie ein Drop-Down-Menü mit allen Auswahlmöglichkeiten, und wenn Sie auf eines klicken, ersetzt es den aktuellen Entry Inhalt.

Python Tkinter Combobox Beispiel

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

Das Tkinter Combobox Widget befindet sich im ttk Modul von Tkinter, deshalb müssen Sie dieses Modul importieren, um dieses Widget zu benutzen.

comboExample = ttk.Combobox(app, values=["January", "February", "March", "April"])

Es erstellt die Instanz des Tkinter Combobox-Widgets und weist auch die Werte zu, die in der Dropdown-Liste erscheinen werden.

comboExample.current(1)

Normalerweise ist das Standardelement, das in der Combobox angezeigt wird, das erste Element in der Werteliste. Sie können es auch mit der Methode current(index) in ein beliebiges Element ändern.

print(comboExample.current(), comboExample.get())

Man könnte auch current() benutzen, um den Index des aktuell ausgewählten Elements zu erhalten, und die get() Methode benutzen, um das Element selbst zu erhalten.

Tkinter Combobox Ereignis-Bindung

Die Bindung der Combobox-Callback-Funktion unterscheidet sich von den in den letzten Kapiteln vorgestellten Widgets. Die Methode bind() ist die Art und Weise, die Callback-Funktion mit dem virtuellen Ereignis der Combobox zu binden, wenn der Benutzer ein Element in der Dropdown-Liste auswählt.

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")

Dies ist die definierte Callback-Funktion, wenn der Benutzer ein Element aus der Liste auswählt.

Hinweis
event soll nicht als Übergabeargument übersprungen werden, es wird aus der Combobox virtuelles Ereignis übergeben
comboExample.bind("<<ComboboxSelected>>", callbackFunc)

Es bindet das virtuelle Ereignis <<<ComboboxSelected>> an die Callback-Funktion.

Jedes Mal, wenn Sie ein neues Element aus der Liste auswählen, druckt es New Element Selected aus.

Tkinter Combobox Dynamische Aktualisierung der Werte

Die Liste der Auswahlmöglichkeiten in der Tkinter Combobox kann dynamisch mit der Option postcommand aktualisiert werden, die die angegebene Funktion ausführt, bevor die Pop-Down-Liste der Auswahlmöglichkeiten angezeigt wird.

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()

Die Funktion changeMonth ändert die Liste der Auswahlmöglichkeiten in der Combobox auf

["July", "August", "September", "October"]

Die Combobox wird nach dem Start der GUI leer angezeigt und zeigt die angegebenen Monate wie oben, nachdem der Benutzer auf den Pfeil in der Combobox geklickt hat.

Tkinter Tutorial Combobox postcommand

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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