Tkinter Tutorial - Combobox

  1. Exemplo da Combobox Python Tkinter
  2. Tkinter Combobox Encadernação de Eventos
  3. Tkinter Combobox Dynamically Update Values
  4. Tkinter Combobox Apenas Leitura
Tkinter Tutorial - Combobox

Tkinter Combobox é a lista drop-down para o usuário escolher. É uma combinação de Entry e drop-down widgets como você pode ver. Quando você clicar na seta do lado esquerdo, você verá um menu suspenso mostrando todas as escolhas, e se você clicar em um, ele irá substituir o conteúdo atual do Entry.

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

Tkinter Tutorial Combobox Basic

from tkinter import ttk 

O widget combobox Tkinter está no módulo ttk do Tkinter, portanto, você precisa importar este módulo para utilizar este widget.

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

Ele cria a instância do Tkinter combobox widget e também atribui os valores que aparecerão na lista suspensa.

comboExample.current(1) 

Normalmente, o item padrão mostrado na combobox é o primeiro elemento da lista de valores. Você também pode alterá-lo para qualquer elemento utilizando o método current(index).

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

Você também poderia utilizar current() para obter o índice do elemento selecionado, e utilizar get() método para obter o próprio elemento.

Tkinter Combobox Encadernação de Eventos

A função de ligação de retorno da combobox é diferente dos widgets introduzidos nos últimos capítulos. O método bind() é a forma de ligar a função de retorno com o evento virtual da combobox quando o usuário seleciona um elemento na lista suspensa.

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 é a função de callback definida quando o usuário seleciona um elemento da lista.

Nota
O event não deve ser ignorado como o argumento passageiro, ele é passado do evento virtual da combobox
comboExample.bind("<<ComboboxSelected>>", callbackFunc) 

Ele liga o evento virtual <<ComboboxSelected>> com a função de retorno de chamada.

Cada vez que você seleciona um novo elemento da lista, ele imprime New Element Selected.

Tkinter Combobox Dynamically Update Values

A lista de escolhas na combobox Tkinter poderia ser atualizada dinamicamente com a opção postcommand que executa a função dada antes de exibir a lista pop-down de escolhas.

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

A função changeMonth muda a lista de escolhas da combobox para

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

A combobox mostra-se vazia após o início da GUI e mostra os meses dados como acima após o usuário clicar na seta na combobox.

Tkinter Tutorial Combobox pós-comando

Tkinter Combobox Apenas Leitura

O conteúdo dos elementos nos exemplos da Combobox mostrados acima é editável porque o state padrão é normal, o que torna o campo de texto diretamente editável.

A Combobox Tkinter tem os outros dois estados além do normal,

  • Somente leitura - o campo de texto não é editável, e o usuário só poderia selecionar os valores da lista suspensa.
  • disabled - a Combobox está cinzenta e a interação é impossível.
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() 

O exemplo acima define o Tkinter Combobox somente para leitura.

Se você mudar o estado de readonly para disabled, a Combobox fica cinzenta, como mostrado abaixo.

Estado da Combobox Tkinter Combobox Desabilitada

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
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