Tkinter Tutorial - Combobox

  1. Python Tkinter Combobox Beispiel
  2. Tkinter Combobox Ereignis-Bindung
  3. Tkinter Combobox Dynamische Aktualisierung der Werte

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

Tkinter Combobox_Basic.py
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.

Tkinter Combobox_Virtual Event Binding.py
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