Menu Tkinter

Resumo : neste tutorial, você aprenderá como criar uma barra de menu Tkinter, adicionar menus à barra de menu e adicionar itens de menu a cada menu.

Quando um aplicativo contém muitas funções, você precisa usar menus para organizá-las e facilitar a navegação.

Normalmente, você usa um menu para agrupar operações intimamente relacionadas. Por exemplo, você pode encontrar o menu Arquivo na maioria dos editores de texto.

Tkinter oferece suporte nativo a menus. Ele exibe menus com a aparência da plataforma de destino que o programa executa, por exemplo, Windows, macOS e Linux.

Criando um menu simples

Primeiro, crie uma rootjanela e defina seu título como 'Menu Demo':

root = tk.Tk()
root.title('Menu Demo')Linguagem de código:  Python  ( python )

Segundo, crie uma barra de menu e atribua-a à menuopção da rootjanela:

menubar = Menu(root)
root.config(menu=menubar)Linguagem de código:  Python  ( python )

Observe que cada janela de nível superior pode ter apenas uma barra de menu.

Terceiro, crie um menu Arquivo cujo contêiner seja menubar:

file_menu = Menu(menubar)Linguagem de código:  Python  ( python )

Quarto, adicione um item de menu ao file_menu:

file_menu.add_command(
    label='Exit',
    command=root.destroy,
)Linguagem de código:  Python  ( python )

Neste exemplo, o rótulo do item de menu é Exit.

Ao clicar no Exititem de menu, o Python chamará o root.destroy()método automaticamente para fechar a rootjanela.

Finalmente, adicione o Filemenu à barra de menu:

menubar.add_cascade(
    label="File",
    menu=file_menu,
    underline=0
)Linguagem de código:  Python  ( python )

A underlineopção permite criar um atalho de teclado. Especifica a posição do caractere que deve ser sublinhado.

Observe que a posição começa do zero. Neste exemplo, nós o especificamos como o primeiro caractere que é F. E você pode selecioná-lo usando o Alt+Fatalho do teclado.

Junte tudo:

import tkinter as tk
from tkinter import Menu

# root window
root = tk.Tk()
root.title('Menu Demo')

# create a menubar
menubar = Menu(root)
root.config(menu=menubar)

# create a menu
file_menu = Menu(menubar)

# add a menu item to the menu
file_menu.add_command(
    label='Exit',
    command=root.destroy
)


# add the File menu to the menubar
menubar.add_cascade(
    label="File",
    menu=file_menu
)

root.mainloop()Linguagem de código:  Python  ( python )

Saída:

Por padrão, o Tkinter adiciona uma linha tracejada antes do primeiro item de menu. Ao clicar na linha tracejada, a janela principal irá separar o menu dela assim:

Para remover a linha tracejada, você pode definir a tearoffpropriedade do menu como False:

file_menu = Menu(menubar, tearoff=False)Linguagem de código:  Python  ( python )

Saída:

Criando um menu mais complexo

O programa a seguir ilustra como criar uma barra de menus, adicionar os menus Arquivo e Ajuda à barra de menus. Além disso, adiciona vários itens de menu a estes menus:

from tkinter import Tk, Frame, Menu


# root window
root = Tk()
root.geometry('320x150')
root.title('Menu Demo')


# create a menubar
menubar = Menu(root)
root.config(menu=menubar)

# create the file_menu
file_menu = Menu(
    menubar,
    tearoff=0
)

# add menu items to the File menu
file_menu.add_command(label='New')
file_menu.add_command(label='Open...')
file_menu.add_command(label='Close')
file_menu.add_separator()

# add Exit menu item
file_menu.add_command(
    label='Exit',
    command=root.destroy
)

# add the File menu to the menubar
menubar.add_cascade(
    label="File",
    menu=file_menu
)
# create the Help menu
help_menu = Menu(
    menubar,
    tearoff=0
)

help_menu.add_command(label='Welcome')
help_menu.add_command(label='About...')

# add the Help menu to the menubar
menubar.add_cascade(
    label="Help",
    menu=help_menu
)

root.mainloop()Linguagem de código:  Python  ( python )

Saída:

A única instrução nova neste programa é usar o add_separator()método para adicionar um separador ao menu.

Adicionando um submenu

O programa a seguir adiciona o item de menu Preferencesao Filemenu e cria um submenu que vincula o novo item de menu:

from tkinter import Tk, Menu


# root window
root = Tk()
root.geometry('320x150')
root.title('Menu Demo')


# create a menubar
menubar = Menu(root)
root.config(menu=menubar)

# create the file_menu
file_menu = Menu(
    menubar,
    tearoff=0
)

# add menu items to the File menu
file_menu.add_command(label='New')
file_menu.add_command(label='Open...')
file_menu.add_command(label='Close')
file_menu.add_separator()

# add a submenu
sub_menu = Menu(file_menu, tearoff=0)
sub_menu.add_command(label='Keyboard Shortcuts')
sub_menu.add_command(label='Color Themes')

# add the File menu to the menubar
file_menu.add_cascade(
    label="Preferences",
    menu=sub_menu
)

# add Exit menu item
file_menu.add_separator()
file_menu.add_command(
    label='Exit',
    command=root.destroy
)


menubar.add_cascade(
    label="File",
    menu=file_menu,
    underline=0
)
# create the Help menu
help_menu = Menu(
    menubar,
    tearoff=0
)

help_menu.add_command(label='Welcome')
help_menu.add_command(label='About...')

# add the Help menu to the menubar
menubar.add_cascade(
    label="Help",
    menu=help_menu,
    underline=0
)

root.mainloop()
Linguagem de código:  Python  ( python )

Saída:

Como funciona.

O código a seguir adiciona um submenu ao Filemenu e vincula o submenu ao Preferencesitem de menu:

# add a submenu
sub_menu = Menu(file_menu, tearoff=0)
sub_menu.add_command(label='Keyboard Shortcuts')
sub_menu.add_command(label='Color Themes')

# add the File menu to the menubar
file_menu.add_cascade(
    label="Preferences",
    menu=sub_menu
)Linguagem de código:  Python  ( python )

Resumo

  • Use Menu()para criar um novo menu,
  • Use menu.add_command()o método para adicionar um item de menu ao menu.
  • Use menubar.add_cascade(menu_title, menu)para adicionar um menuao arquivo menubar.
  • Use menu.add(submenu_title, submenu)para adicionar um submenu ao arquivo menu.

Deixe um comentário

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