Resumo : neste tutorial, você aprenderá sobre o OptionMenu
widget Tkinter para exibir um conjunto de opções em um menu suspenso.
Introdução ao OptionMenu
widget Tkinter
O OptionMenu
widget fornece um conjunto predefinido de opções em um menu suspenso.
Para criar um novo OptionMenu
widget, você usa o OptionMenu
construtor:
OptionMenu(container, variable, default=None, *values, **kwargs)
Linguagem de código: Python ( python )
O OptionMenu
construtor aceita vários parâmetros:
container
é o widget pai doOptionMenu
widget.variable
é umtk.StringVar
objeto que contém a opção atualmente selecionada doOptionMenu
.default
é a opção padrão que o widget exibe inicialmente.values
é uma lista de valores que aparecem no menu suspenso.kwargs
é a configuração específica do widget.
O OptionMenu
permite alterar a direção do menu suspenso por meio da direction
opção. As direções válidas são 'above'
, 'below'
, 'left'
, 'right'
, ou 'flush'
.
O OptionMenu
widget também suporta a command
opção. Isso permite atribuir um retorno de chamada que será chamado após a seleção de um item.
Como outros widgets ttk , você pode especificar o nome do estilo para OptionMenu
usar a style
opção.
OptionMenu
Exemplo de widget Tkinter
O exemplo a seguir ilustra como usar um OptionMenu
widget. Quando você seleciona um item, sua seleção será exibida em um rótulo:
import tkinter as tk
from tkinter import ttk
class App(tk.Tk):
def __init__(self):
super().__init__()
self.geometry("320x80")
self.title('Tkinter OptionMenu Widget')
# initialize data
self.languages = ('Python', 'JavaScript', 'Java',
'Swift', 'GoLang', 'C#', 'C++', 'Scala')
# set up variable
self.option_var = tk.StringVar(self)
# create widget
self.create_wigets()
def create_wigets(self):
# padding for widgets using the grid layout
paddings = {'padx': 5, 'pady': 5}
# label
label = ttk.Label(self, text='Select your most favorite language:')
label.grid(column=0, row=0, sticky=tk.W, **paddings)
# option menu
option_menu = ttk.OptionMenu(
self,
self.option_var,
self.languages[0],
*self.languages,
command=self.option_changed)
option_menu.grid(column=1, row=0, sticky=tk.W, **paddings)
# output label
self.output_label = ttk.Label(self, foreground='red')
self.output_label.grid(column=0, row=1, sticky=tk.W, **paddings)
def option_changed(self, *args):
self.output_label['text'] = f'You selected: {self.option_var.get()}'
if __name__ == "__main__":
app = App()
app.mainloop()
Linguagem de código: Python ( python )
Saída:
Como funciona.
Primeiro, defina uma lista de strings usadas para exibição no OptionMenu
widget:
self.languages = ('Python', 'JavaScript', 'Java', 'Swift', 'GoLang', 'C#', 'C++', 'Scala')
Linguagem de código: Python ( python )
Segundo, defina um ttk.StringVar()
objeto que contenha o item atualmente selecionado no OptionMenu
método __init__()
:
self.option_var = tk.StringVar(self)
Linguagem de código: Python ( python )
Terceiro, crie uma nova instância do OptionMenu
widget:
option_menu = ttk.OptionMenu(
self,
self.option_var,
self.languages[0],
*self.languages,
command=self.option_changed)
Linguagem de código: Python ( python )
Observe que se você pular o valor padrão self.languages[0]
, o primeiro item OptionMenu
desaparecerá.
O option_changed()
método será executado após um item ser selecionado. O método define o texto do output_label
item selecionado:
self.output_label['text'] = f'You selected: {self.option_var.get()}'
Linguagem de código: PHP ( php )
Resumo
- Use o widget Tkinter
OptionMenu
para fornecer aos usuários um conjunto fixo de opções em um menu suspenso. - Sempre especifique o valor padrão para o
OptionMenu
construtor.