Estou escrevendo um código para adicionar um menu a um aplicativo tkInter. Aqui está um exemplo funcional:
import tkinter
main = tkinter.Tk()
main.title('Menu Test')
menubar = tkinter.Menu(main)
main['menu'] = menubar
m = tkinter.Menu()
menubar.add_cascade(menu=m, label='First')
m.add_command(label='Thing', command=lambda: print('thing'))
m = tkinter.Menu()
menubar.add_cascade(menu=m, label='Second')
m.add_command(label='Whatever', command=lambda: print('whatever'))
# How to add another menu before 'First' ?
main.mainloop()
É possível adicionar outro menu antes do primeiro menu ( First
)?
Obviamente, neste caso simples, posso simplesmente defini-lo primeiro, mas quero escrever uma rotina que preencha um menu a partir de um dicionário.
Você pode usar o método tk padrão
insert
em vez deadd_cascade
. O primeiro argumento é um índice de menu, e o novo item será adicionado antes desse índice. Para o índice, você pode usar um índice numérico (por exemplo:0
para representar o primeiro item) ou o nome do menu"First"
:-ou-
Há também um
insert_cascade
método exclusivo do tkinter (em comparação com o tk toolkit em outras linguagens):Checkout Usando dicionário para fazer menu de opções e receber os valores na seleção, com tkinter , é uma situação similar ao que você está tentando fazer com dicionários. Espero que ajude :)