Menu
fr = tk.Menu(parent, opcao=valor, ...)
Cria um menu Frame numa janela ou numa frame, ‘parent’.
O construtor retorna o objeto Menu.
Atributos
Opção | Descrição |
---|---|
activebackground | Cor de fundo quando o cursor está sobre uma opção do menu. |
activeborderwidth | Espessura da borda à volta da opção do menu quando o rato está sobre ela. |
activeforeground | Cor de primeiro plano de uma opção quando o rato está sobre ela. |
bd ou borderwidth | Espessura da borda à volta de todas as opções do menu. |
bg ou background | Cor de fundo das opções do menu. |
cursor | Cursor que aparece quando o rato está sobre as opções do menu. |
disableforeground | Cor do texto para as opções cujo estado seja tk.DISABLED . |
font | Fonte de defeito para opções textuais. |
fg ou foreground | Cor de primeiro plano das opções do menu. |
postcommand | Define uma função de callback que será chamada de cada vez que o menu fôr chamado. |
relief | O tipo de relevo do menu é tk.RAISED. Pode-se definir outros estilos de relevo. |
selectcolor | Especifica a cor de radiobuttons e checkbuttons quando são selecionados. |
tearoff | Controla se um menu pode ser “destacado” (tornado flutuante) da janela principal, criando uma janela separada com o mesmo conteúdo do menu. |
tearoffcommand | Se igual a zero a scrollbar não receberá o foco a partir do teclado. |
title | Largura da scrollbar (a sua dimensão y se a scrollbar fôr horizontal, dimensão x se a scrollbar fôr vertical). Valor de defeito = 16. |
Métodos
.add(tipo, opcoes) : adiciona uma nova opção de menu de um determinado tipo a um menu. tipo pode ser: ‘cascade’, ‘checkbutton’, ‘command’, ‘radiobutton’, ou ‘separator’
.add_cascade(opcoes) : adiciona um submenu como uma nova opção de um menu.
.add_checkbutton(opcoes) : adiciona um checkbutton como uma opção de um menu.
.add_radiobutton(opcoes) : adiciona um radiobutton como uma opção de um menu.
.add_command(opcoes) : adiciona uma opção a um menu.
.add_separator(opcoes) : adiciona um separador ao menu. É relevante na contagem de opções do menu.
.delete(indice1, indice2=None) : elimina as opções do menu de indice1 a indice2, inclusive. Sem o 2º argumento elimina a opção indice1.
.entryconfigure(indice, opcoes) : permite alterar uma propriedade de uma opção do menu.
.index(item) : retorna o índice do item do menu.
.add_cascade(opcoes) : adiciona um submenu como uma nova opção de um menu.
.add_checkbutton(opcoes) : adiciona um checkbutton como uma opção de um menu.
.add_radiobutton(opcoes) : adiciona um radiobutton como uma opção de um menu.
.add_command(opcoes) : adiciona uma opção a um menu.
.add_separator(opcoes) : adiciona um separador ao menu. É relevcante na contagem de opções do menu.
.insert_cascade(indice, opcoes) : insere um submenu como uma nova opção de um menu,na posição indice.
.insert_checkbutton(indice, opcoes) : insere um checkbutton como uma opção de um menu,na posição indice.
.insert_radiobutton(indice, opcoes) : insere um radiobutton como uma opção de um menu,na posição indice.
.insert_command(indice, opcoes) : insere uma opção a um menu,na posição indice.
.insert_separator(indice, opcoes) : insere um separador ao menu,na posição indice. É relevcante na contagem de opções do menu,na posição indice.
.invoke(indice) : chama a função de callback associada à opção indice. Se fôr um checkbutton, alterna entre on e off; se fôr um radiobutton, seleciona-o
.type(indice) : retorna o tipo de opção do menu. Pode ser tk.CASCADE, tk.CHECKBUTTON, tk.COMMAND, tk.RADIOBUTTON, tk.SEPARATOR, ou tk.TEAROFF
Exemplo 1:
from tkinter import *
from tkinter import messagebox
window = Tk()
window.title("Tkinter - Menu")
window.geometry("200x100")
def domenu(action):
messagebox.showinfo("Menu acção", action)
menubar = Menu(window)
#Menu Ficheiro:
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Novo", command=lambda: domenu('Novo'))
filemenu.add_command(label="Abrir", command=lambda: domenu('Abrir'))
filemenu.add_command(label="Guardar", command=lambda: domenu('Guardar'))
filemenu.add_command(label="Fechar", command=lambda: domenu('Fechar'))
filemenu.add_separator()
filemenu.add_command(label="Sair", command=window.quit)
menubar.add_cascade(label="Ficheiro", menu=filemenu)
#Menu Editar:
editmenu = Menu(menubar, tearoff=0)
editmenu.add_command(label="Cortar", command=lambda: domenu('Cortar'))
editmenu.add_command(label="Copiar", command=lambda: domenu('Copiar'))
editmenu.add_command(label="Colar", command=lambda: domenu('Colar'))
editmenu.add_command(label="Eliminar", command=lambda: domenu('Eliminar'))
menubar.add_cascade(label="Editar", menu=editmenu)
#Adiciona barra de menu à janela:
window.config(menu=menubar)
window.mainloop()
Saída :

Exemplo 2:
Criação de um menu popup:
from tkinter import *
window = Tk()
window.title("Tkinter - Menu")
window.geometry("200x100")#mostra o menu popup:
def popup(event):
menupopup.post(event.x_root, event.y_root)
def do():
pass#ao clicar no botao direito do rato, chaa a função popup():
window.bind("<Button-3>",popup)#cria o menu popup:
menupopup = Menu(window, tearoff=0)
menupopup1 = Menu(menupopup, tearoff=0)
menupopup1.add_command(label="Test1", command=do)
menupopup1.add_command(label="Test2", command=do)
menupopup1.add_command(label="Test3", command=do)
menupopup2 = Menu(menupopup, tearoff=0)
menupopup2.add_command(label="Test1", command=do)
menupopup2.add_command(label="Test2", command=do)
menupopup2.add_command(label="Test3", command=do)
menupopup.add_cascade(label="Test1", menu=menupopup1)
menupopup.add_cascade(label="Test2", menu=menupopup2)
window.mainloop()
Saída :
