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 root
janela 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 à menu
opção da root
janela:
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 Exit
item de menu, o Python chamará o root.destroy()
método automaticamente para fechar a root
janela.
Finalmente, adicione o File
menu à barra de menu:
menubar.add_cascade(
label="File",
menu=file_menu,
underline=0
)
Linguagem de código: Python ( python )
A underline
opçã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+F
atalho 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 tearoff
propriedade 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 Preferences
ao File
menu 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 File
menu e vincula o submenu ao Preferences
item 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 ummenu
ao arquivomenubar
. - Use
menu.add(submenu_title, submenu)
para adicionar um submenu ao arquivomenu
.