Botão de menu Tkinter

Resumo : neste tutorial, você aprenderá como usar o Menubuttonwidget Tkinter.

Introdução ao Menubuttonwidget

Um Menubuttonwidget é uma combinação de um Buttone um Menuwidget.

Quando você clica em Menubutton, ele mostra um menu com opções. Por exemplo:

Para criar um Menubuttonwidget, siga estas etapas:

Primeiro, crie um MenuButtonwidget:

menu_button = ttk.Menubutton(container, **options)Linguagem de código:  Python  ( python )

Segundo, crie uma nova instância da Menuclasse:

menu = tk.Menu(menu_button, tearoff=False)Linguagem de código:  Python  ( python )

Terceiro, adicione um ou mais itens de menu à instância de menu. E você pode adicionar widgets Checkbutton ou Radiobutton ao menu.

Por fim, atribua Menuà MenuButtoninstância:

menu_button["menu"] = menuLinguagem de código:  Python  ( python )

Exemplo de widget de botão de menu Tkinter

O programa a seguir ilustra como usar Menubuttono widget. Ao clicar em MenuButton, será exibido um menu que consiste em três opções: vermelho, verde e azul.

A cor de fundo da janela principal mudará com base no item de menu selecionado Menubutton:

import tkinter as tk
from tkinter import ttk


class App(tk.Tk):
    def __init__(self):
        super().__init__()

        self.geometry('300x250')
        self.title('Menubutton Demo')

        # Menubutton variable
        self.selected_color = tk.StringVar()
        self.selected_color.trace("w", self.menu_item_selected)

        # create the menu button
        self.create_menu_button()

    def menu_item_selected(self, *args):
        """ handle menu selected event """
        self.config(bg=self.selected_color.get())

    def create_menu_button(self):
        """ create a menu button """
        # menu variable
        colors = ('Red', 'Green', 'Blue')

        # create the Menubutton
        menu_button = ttk.Menubutton(
            self,
            text='Select a color')

        # create a new menu instance
        menu = tk.Menu(menu_button, tearoff=0)

        for color in colors:
            menu.add_radiobutton(
                label=color,
                value=color,
                variable=self.selected_color)

        # associate menu with the Menubutton
        menu_button["menu"] = menu

        menu_button.pack(expand=True)


if __name__ == "__main__":
    app = App()
    app.mainloop()Linguagem de código:  Python  ( python )

Como funciona.

No __init__()método, definimos uma variável que rastreia o valor selecionado do menu:

self.selected_color = tk.StringVar()
self.selected_color.trace("w", self.menu_item_selected)Linguagem de código:  Python  ( python )

Se o valor de selected_colorfor alterado, o método menu_item_selected será executado.

O create_menu_button()método cria o MenuButton:

Primeiro, crie um botão Menu:

menu_button = ttk.Menubutton(
    self,
    text='Select a color')Linguagem de código:  Python  ( python )

Em seguida, crie um novo menu e adicione três Radiobuttonwidgets derivados da colorstupla ao menu:

# create a new menu instance
menu = tk.Menu(menu_button, tearoff=0)

for color in colors:
    menu.add_radiobutton(
        label=color,
        value=color,
        variable=self.selected_color)Linguagem de código:  Python  ( python )

Quando você seleciona um item de menu, o valor da self.selected_colorvariável muda para o valor do item de menu selecionado.

Por fim, associe o menu ao Menubutton:

menu_button["menu"] = menuLinguagem de código:  Python  ( python )

Resumo

  • Use Menubuttono widget Tkinter para criar um menu associado a um botão.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *