Tutorial de Tkinter - Combobox
- Ejemplo de Combobox de Python Tkinter
- Encuadernación de eventos de Tkinter Combobox
- Tkinter Combobox Actualizar valores dinámicamente
- Tkinter Combobox Sólo lectura
Tkinter Combobox es la lista desplegable para que el usuario pueda elegir. Es una combinación de Entry
y de widgets drop-down
como puedes ver. Cuando haga clic en la flecha de la izquierda, verá un menú desplegable que muestra todas las opciones, y si hace clic en una de ellas, reemplazará el contenido actual de Entry
.
Ejemplo de Combobox de 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
El widget Tkinter combobox está en el módulo ttk
de Tkinter, por lo tanto, necesitas importar este módulo para usar este widget.
comboExample = ttk.Combobox(app, values=["January", "February", "March", "April"])
Crea la instancia del widget Tkinter combobox y también asigna los valores que aparecerán en la lista desplegable.
comboExample.current(1)
Normalmente, el elemento por defecto que se muestra en el combobox es el primer elemento de la lista de valores. También puede cambiarlo a cualquier elemento usando el método current(index)
.
print(comboExample.current(), comboExample.get())
También puede usar current()
para obtener el índice del elemento seleccionado actual, y usar el método get()
para obtener el elemento mismo.
Encuadernación de eventos de Tkinter Combobox
El enlace de la función de devolución de llamada del combobox es diferente de los widgets introducidos en los últimos capítulos. El método bind()
es la forma de enlazar la función de devolución de llamada con el evento virtual combobox cuando el usuario selecciona un elemento en la lista desplegable.
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")
Esta es la función de devolución de llamada definida siempre que se selecciona un elemento de la lista.
comboExample.bind("<<ComboboxSelected>>", callbackFunc)
Vincula el evento virtual <<ComboboxSelected>>
con la función de devolución de llamada.
Cada vez que se selecciona un nuevo elemento de la lista, se imprime New Element Selected
.
Tkinter Combobox Actualizar valores dinámicamente
La lista de opciones en el combobox de Tkinter puede ser actualizada dinámicamente con la opción postcommand
que ejecuta la función dada antes de mostrar la lista desplegable de opciones.
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 función changeMonth
cambia la lista de opciones del combobox para que sea
["July", "August", "September", "October"]
El combobox se muestra vacío después de que se inicia la GUI y muestra los meses dados como arriba después de que el usuario hace clic en la flecha del combobox.
Tkinter Combobox Sólo lectura
El contenido de los elementos en los ejemplos de Combobox mostrados arriba es editable porque el status
por defecto es normal
lo que hace que el campo de texto sea directamente editable.
Tkinter Combobox tiene los otros dos estados además del normal
,
readonly
- el campo de texto no es editable, y el usuario sólo puede seleccionar los valores de la lista desplegable.disabled
- el Combobox está en gris y la interacción es imposible.
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()
El ejemplo anterior establece el Tkinter Combobox como de sólo lectura.
Si usted cambia el estado de readonly
a disabled
, el Combobox aparece en gris como se muestra a continuación.
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