Bom dia/tarde!
O problema que estou tendo é o seguinte. Escrevi o seguinte programa em Python teste.py
:
#!/usr/bin/env python
x=int(input())
if x >= 0:
if x%2==0:
print('Par e não negativo')
else:
print('Impar e positivo')
else:
if x%2==0:
print('Par e não negativo')
else:
print('Impar e negativo')
Após isso, mudei as permissões, conforme mostra a imagem:
Com isso, estou conseguindo rodar o programa pelo terminal.
Porém, quando tento executar pela interface gráfica, não ocorre nada. E quando digo nada, é nada mesmo, é como se eu não tivesse clicado em nada.
Inicialmente, achei que poderia ter haver o com o interpretador Python, assim, escrevi o script em shell teste.sh
:
#!/usr/bin/env bash
read x
if [ $x -ge "0" ]
then
echo "É não negativo"
else
echo "É negativo"
fi
E com isso o mesmo ocorre, consigo executar pelo terminal, mas quando tento pela interface, nada…
Sendo assim, alguém tem uma ideia do que pode ser?
Script de linha de comando não dão msgens quando executadas fora da linha de comando, isso é o esperado, para que o script retorne saída para a GUI você deve implementar uma GUI no script.
#!/usr/bin/env bash
x=$(zenity --entry --title "Verificador de número" --text "Insira um número:")
if [ "$x" -ge 0 ]; then
zenity --info --title "Resultado" --text "O número é não negativo."
else
zenity --info --title "Resultado" --text "O número é negativo."
fi
Este exemplo depende do Zenity estar instalado para a GUI funcionar.
2 curtidas
A interface gráfica espera um programa que rode em interface gráfica. Mensagens enviadas para o terminal são apenas descartadas, e não é possível enviar dados para programa.
(Inclusive, esse é o motivo pelo qual programas no Linux parecem simplesmente não abrir quando há algum erro que impede a abertura da interface gráfica, como arquivos ausentes).
2 curtidas
Então, instalei o zenity e acontece o mesmo, porém agora com a interface fornecida pelo zenity, ou seja, ele roda pelo terminal mas quando tento rodar pela interface gráfica, como na foto anterior, ele não abre, nem a interface fornceda pelo zenity.
Em fim, se você for escrever um script para rodar em interface gráfica então você deve usar no script algum software que gere uma interface gráfica.
Existe vários software para gerar interface gráfica de usuário, não é somente o Zenity de opção.
Você tento rodar o código que eu mandei, ele esta funcionando aqui, as vezes você tenha errado os parâmetros do Zenity.
Sim… eu acho que entendi essa parte (script que gere a interface gráfica), o que não ficou claro foi o motivo pelo qual ele funciona quando rodo pelo terminal, mas não quando clico com o botão direito do mouse e tento rodar através da interface gráfica…
Sim… eu copie e colei no meu teste.sh
Então, eu tentei implementar o exemplo sugerido pelo @aguamole, mas ainda não funciounou ao tentar rodar pela interface, mesmo indicando a interface gráfica no script…
Rodar ele roda so que você não vai ver a sua execução porque ele esta rodando no backend.
Para visualizar na GUI você precisa adicionar uma GUI no script.
Seu Zenity esta com algum problema, verifica direitinho porque ele esta com problema.
1 curtida
Certo… vou dar mais uma procurada. Obrigado pelo seu tempo!
@aguamole e @Capezotte eu fui testar o script sugerido pelo @aguamole no meu sistema secundário, no caso o Zorin Os, e o comportamento que eu queria funcionou perfeitamente. Isto é, quando eu clico com o botão direito, ele me pergunta se quero executar, e ao confirmar ele funciona.
Com isso, imagino que deva estar faltando alguma dependência lá no meu Arch… Só resta descobrir qual kkk já que não tenho nenhum tipo de mensagem

Novamente, obrigado pelas respostas!
Não tem nenhuma relação com dependências e sim sobre qual é o comportamento do gerenciador de arquivos que você tá usando. Vai nas configurações do seu gerenciador de arquivos e vê como ele tá configurado pra trabalhar com arquivos de texto executáveis (scripts, basicamente). Por exemplo no print abaixo é o gerenciador de arquivos Nemo do Linux Mint, com a primeira opção ele basicamente executa o script desprendido de qualquer terminal, logo você não tem nenhuma indicação do que tá acontecendo. Já com a opção “Perguntar toda vez” ele abre a mesma janela do seu print perguntando o que se quer fazer com o arquivo, fornecendo a opção de executar no terminal que é a que você deseja.
Se por algum motivo não existir essa configuração/recurso no seu gerenciador de arquivos padrão, aí você instala outro pra usar no lugar.