Como criar o menu suspenso no Tkinter
Tem alguns métodos para criar um menu dropdown no Tkinter.
- Use Combobox como introduzido no Tkinter tutorial Combobox capítulo Combobox.
- Use OptionMenu Widget.
O OptionMenu é um pouco semelhante ao widget Combobox mas já está incluído no próprio Tkinter, portanto, não precisa de importar ttk como no caso do Combobox
.
Exemplo de Tkinter OptionMenu
import tkinter as tk
OptionList = ["Aries", "Taurus", "Gemini", "Cancer"]
app = tk.Tk()
app.geometry("100x200")
variable = tk.StringVar(app)
variable.set(OptionList[0])
opt = tk.OptionMenu(app, variable, *OptionList)
opt.config(width=90, font=("Helvetica", 12))
opt.pack()
app.mainloop()
opt = tk.OptionMenu(app, variable, *OptionList)
app
é o pai do menu de opções criado,
A variável de texto inicial que tem o tipo tk.StringVar
é a variável de texto inicial.
A *OptionList
é as outras opções de menu. *
é utilizada para desempacotar o container, como list
digite aqui.
Comando Bind para OptionMenu Quando o valor muda
OptMenu não conseguiu ligar um comando quando um novo valor é selecionado a partir da lista de opções. Você não poderia simplesmente ligar uma função de retorno a ele como button widget
tk.Button(app, text="Increase", width=30, command=change_label_number)
Você precisa utilizar um método de rastreamento para anexar as chamadas de retorno do observer
à variável OptionMenu
. Toda vez que a variável muda, ela aciona as funções de callback.
Exemplo de callback de OptionMenu
import tkinter as tk
OptionList = ["Aries", "Taurus", "Gemini", "Cancer"]
app = tk.Tk()
app.geometry("100x200")
variable = tk.StringVar(app)
variable.set(OptionList[0])
opt = tk.OptionMenu(app, variable, *OptionList)
opt.config(width=90, font=("Helvetica", 12))
opt.pack(side="top")
labelTest = tk.Label(text="", font=("Helvetica", 12), fg="red")
labelTest.pack(side="top")
def callback(*args):
labelTest.configure(text="The selected item is {}".format(variable.get()))
variable.trace("w", callback)
app.mainloop()
O traço observer
tem três modos,
modo de observador | Explicação |
---|---|
w |
quando a variable é escrita por alguém |
r |
quando a variable é lida por alguém |
u |
quando variable é apagada |
Então variable.trace("w", callback)
significa que ele irá chamar a função callback
quando variable
for escrito ou selecionado pelo usuário.
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