
Security News
MCP Community Begins Work on Official MCP Metaregistry
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
Esse menu de seleção para terminal foi criado para suprir a necessidade de fluidez dentro de um sistema feito para o terminal, onde a entrada de dados e seleção de opções torna-se complicada e pouquÃssimo atrativo para o usuário.
Descrição técnica:
Este programa contém duas funções e uma classe. A função cls() é responsável por limpar a tela do terminal. A função getch() captura a tecla pressionada pelo usuário sem exibir o caractere digitado no terminal. A classe Menu_seleção é responsável por criar um menu de seleção de opções no terminal, permitindo que o usuário navegue pelas opções usando as setas de direção e selecione uma opção pressionando a tecla Enter.
A classe Menu_seleção possui um construtor init() que define as opções de formatação de texto para o cabeçalho e as opções de menu, além de outras configurações. A classe tem também o método Set_Paleta() que permite definir um conjunto personalizado de opções de formatação de texto para o menu.
O método options() da classe Menu_seleção é responsável por exibir o menu e permitir que o usuário navegue pelas opções e selecione uma delas. Esse método recebe como parâmetros o cabeçalho, a descrição e as opções de menu a serem exibidas. O método usa a função cls() para limpar a tela e, em seguida, exibe o cabeçalho, a descrição e as opções de menu no terminal. O método permite que o usuário navegue pelas opções de menu usando as teclas de seta para cima e para baixo. Quando o usuário seleciona uma opção, pressionando a tecla Enter, o método retorna o Ãndice da opção selecionada.
Para utilizar em seu código, coloque o arquivo "Menu_seleção.py" na pasta de seu projeto de forma que consiga importa-lo. Importe o menu de seleção, aconselho colocar o apelido como ms
from Menu_seleção import Menu_seleção as ms
Defina um cabeçalho que sempre irá aparecer nas telas de navegação:
cabecalho = "B.R.A.I.N.S"
Instancie um objeto do tipo Menu_seleção que receberá todas as configurações básicas para seu menu funcionar.
menu = ms(cabeçalho=cabecalho)
Apenas com o cabeçalho já é possÃvel utiliza-lo, pois ele vem com configurações default! As configurações que podem ser definidas ao instanciar o menu são:
1 - Cabeçalho: Como no exemplo acima, ideal que tenha um tamanho legal para caber dentro do terminal e ainda conseguir mostrar as opções. Ele também pode ser vazio caso não queira cabeçalho, Basta apenas não especifica-lo.
2 - limite_opçoes: É o limite de opções que aparecerão por vez na tela. Em casos onde as opções passariam da tela e ficaria inviável visualizar de forma confortável. Ele por padrão vem como 10 itens, mas pode ser alterado da seguinte maneira:
menu = ms(cabeçalho=cabeçalho,limite_opçoes=5)
Dessa forma ele vai imprimir na tela apenas cinco opções, e terá o rolamento deles caso o usuário tente selecionar o item 6.
3 - texto_seleção: É a configuração do estilo de texto, cor do texto e cor de fundo. Por padrão, o texto selecionado será em negrito, texto vermelho e fundo cinza. Para alterar essa opção, basta informar uma lista com três strings respectivamente:
texto = ["negrito","vermelho","cinza"] # ["Estilo","Cor do texto","Cor de fundo"]
As opções para alteração do estilo do texto são:
"negrito": Deixa o texto mais grosso, no estilo bold;
"sublinhado:" Deixa o texto com uma linha abaixo;
"normal": Volta a formatação original do estilo;
"negativo Inverte a cor de texto com a cor de fundo;
As opções para as cores de texto e cores de fundo são:
"branco","vermelho","verde","amarelo","azul","roxo","ciano","cinza","normal"
Para editar essa formatação ao instanciar o menu, você pode fazer:
menu = ms(texto_seleção=["normal","vermelho","verde"])
texto_padrão: É outro argumento parecido com o texto_seleção, tem as mesmas configurações e a sua edição é da mesma maneira, porém, ele vai editar as cores das opções que não estão selecionadas.
Caso queira editar as cores do terminal após instanciar o menu, você possui duas maneiras:
1 - Editando diretamente a variável interna "texto_seleção ou "texto_padrao":
menu.texto_seleção = ['normal','verde','branco']
menu.texto_padrao = ['negrito','ciano','cinza']
2 - Utilizando a função Set_Paleta(texto_seleção,texto_padrão)
menu.Set_Paleta(['normal','verde','branco'],['negrito','ciano','cinza'])
E por fim, temos a função que mostra as opções de navegação do usuário.
Função options cabeçalho: Ela por padrão utiliza o cabeçalho informado anteriormente, mas que pode ser informado nesse momento caso queira utilizar outro para essa tela especÃfica (Não precisa ser especificado na função, por padrão, utilizará o cabeçalho informado anteriormente);
descrição: É um argumento que pode mudar em toda tela, onde pode mostrar orientações ao usuário, descrição da tela, mostrar alguns dados, etc. É um argumento String (Não precisa ser especificado na função, por padrão apenas não vai printar nenhuma descrição;
opções: É o argumento obrigatório para funcionar! Você informa uma lista de Strings que serão printadas na mesma ordem como opções para o usuário. Não há limite para a quantidade de opções. As únicas teclas reconhecidas nesse momento são as teclas para cima, baixo e enter.
O método vai retornar o index da lista informada de opções.
Exemplo completo:
from Menu_seleção import Menu_seleção as ms
cabeçalho = "B.R.A.I.N.S"
seleção = ["negrito","vermelho","verde"]
padrão = ['normal','branco','normal']
menu = ms(cabeçalho=cabeçalho,
limite_opçoes=5,
texto_seleção=seleção,
texto_padrao=padrão
)
opções = ["Logar","Me Cadastrar","Sair","opção 4","opção 5","opção 6","opção 7","opção 8"]
select = menu.options(descrição="Bem vindo, o que deseja fazer?",opções=opções)
if select == 0:
print('Função logar()')
elif select == 1:
print('Função Cadastrar()')
elif select == 2:
print('Função Exit()')
else:
print("Opção selecionada: " + opções[select])
Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para detalhes.
FAQs
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
Research
Security News
Socket uncovers an npm Trojan stealing crypto wallets and BullX credentials via obfuscated code and Telegram exfiltration.
Research
Security News
Malicious npm packages posing as developer tools target macOS Cursor IDE users, stealing credentials and modifying files to gain persistent backdoor access.