Tutoriel Tkinter - Combobox
- Exemple de Combobox Python Tkinter
- Tkinter Combobox Event Binding
- Tkinter Combobox met à jour dynamiquement les valeurs
- Tkinter Combobox Lecture seule
Tkinter Combobox est la liste déroulante dans laquelle l’utilisateur peut choisir. C’est une combinaison de Entry
et de widgets drop-down
comme vous pouvez le voir. Lorsque vous cliquez sur la flèche sur le côté gauche, vous verrez un menu déroulant montrant tous les choix, et si vous cliquez sur l’un d’entre eux, il remplacera le contenu actuel de Entry
.
Exemple de 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
Le widget Tkinter combobox est dans le module ttk
de Tkinter, donc, vous devez importer ce module pour utiliser ce widget.
comboExample = ttk.Combobox(app, values=["January", "February", "March", "April"])
Il crée l’instance du widget Tkinter combobox et assigne également les valeurs qui apparaîtront dans la liste déroulante.
comboExample.current(1)
Normalement, l’élément par défaut qui apparaît dans la combobox est le premier élément de la liste des valeurs. Vous pouvez aussi le changer en n’importe quel élément en utilisant la méthode current(index)
.
print(comboExample.current(), comboExample.get())
Vous pouvez aussi utiliser current()
pour obtenir l’index de l’élément sélectionné, et utiliser la méthode get()
pour obtenir l’élément lui-même.
Tkinter Combobox Event Binding
La liaison de la fonction de rappel de la combobox est différente des widgets présentés dans les derniers chapitres. La méthode bind()
est la façon de lier la fonction de rappel avec l’événement virtuel combobox lorsque l’utilisateur sélectionne un élément dans la liste déroulante.
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")
C’est la fonction de rappel définie chaque fois que vous sélectionnez un élément dans la liste.
comboExample.bind("<<ComboboxSelected>>", callbackFunc)
Il lie l’événement virtuel <<ComboboxSelected>>
avec la fonction de rappel.
Chaque fois que vous sélectionnez un nouvel élément dans la liste, il affiche <<ComboboxSelected>>
.
Tkinter Combobox met à jour dynamiquement les valeurs
La liste des choix dans la combobox de Tkinter pourrait être mise à jour dynamiquement avec l’option postcommand
qui exécute la fonction donnée avant d’afficher la liste déroulante des choix.
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 fonction changeMonth
change la liste de choix de la combobox pour être
["July", "August", "September", "October"]
La combobox est vide après le démarrage de l’interface graphique et affiche les mois donnés comme ci-dessus après que l’utilisateur ait cliqué sur la flèche dans la combobox.
Tkinter Combobox Lecture seule
Le contenu des éléments dans les exemples de Combobox montrés ci-dessus est éditable parce que state
par défaut est normal
, ce qui rend le champ de texte directement éditable.
Tkinter Combobox a les deux autres états en plus de normal
,
readonly
- le champ de texte n’est pas modifiable, et l’utilisateur ne peut que sélectionner les valeurs dans la liste déroulante.disabled
- la Combobox est grisée et l’interaction est impossible.
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’exemple ci-dessus met la Combobox de Tkinter en lecture seule.
Si vous changez l’état de readonly
à disabled
, la Combobox est grisée comme montré ci-dessous.
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