Pergunta

Eu estou tentando esconder o Terminal quando eu lançar um aplicativo baseado em GUI Tkinter, mas quando eu duplo clique no arquivo app.py no OSX, aparece janela de terminal. Eu tentei mudar a extensão para .pyw e tentou lançá-lo com / usr / bin / pythonw, mas não importa o que, a janela Terminal ainda aparece.

Eu mesmo tentei adicionar o try / exceto abaixo, mas quando eu executá-lo eu recebo o erro: 'nome do comando inválida 'console'' na janela Terminal que aparece.

from Tkinter import *

class MainWindow(Tk):
    def __init__(self):
        Tk.__init__(self)
        try:
            self.tk.call('console', 'hide')
        except TclError, err:
           print err

win = MainWindow()
win.mainloop()

Eu não tenho sido capaz de encontrar alguma maneira de ocultar a janela Terminal de aparecer. Alguém tem alguma idéia?

Foi útil?

Solução

Ao clicar duas vezes em um arquivo .py no OS X, você provavelmente está lançando uma instância gui Python através da Python Launcher.app fornecido com OS X Pythons. Você pode verificar que, selecionando o arquivo .py no Finder e fazendo um Get Info nele. Python Launcher é um aplicativo muito simples de espírito que começa Python através de um comando Terminal.app. Para iniciar diretamente o seu próprio aplicativo Python GUI, a abordagem preferida é criar um aplicativo simples usando py2app . Há um breve tutorial aqui .

EDIT:

Existem outras maneiras, é claro, mas muito provavelmente nenhum deles seria adicionar mais níveis de engano. Para fazer uma launchable normal, aplicação "double-clicável", você precisa de algum tipo de estrutura de aplicativo. Isso é o que py2app permite criar diretamente.

Uma alternativa muito simplória é tirar proveito da capacidade do Editor de AppleScript para criar um aplicativo lançador. No editor AppleScript:

  • /Applications/Utilities/AppleScript Editor.app no OS X 10.6

  • /Applications/AppleScript/Script Editor.app em 10,5

Faça um novo script semelhante a este:

do shell script "/path/to/python /path/to/script.py &> /dev/null &"

e, em seguida, Save As.. com File Format -> Application. Então você terá um aplicativo double-clicável que vai lançar outro aplicativo. Você pode criar algo semelhante com Automater.app da Apple. Mas, debaixo das cobertas, eles estão fazendo algo semelhante ao que py2app faz por você, só que com mais camadas em cima.

Outras dicas

Somando-se a resposta por Ned Deily, im meu caso quando eu tentei iniciar o aplicativo Python utilizando uma aplicação AppleScript, não funcionou inicialmente. Eu descobri que ele tem algo a para com algum tipo de codificação de erro (estou usando UTF-8 e na necessidade passado eu tinha sentido configurá-lo para UTF-8).

Assim, depois de uma investigação mais aprofundada, descobri que eu posso fazer isso através da criação de um aplicativo AppleScript com o seguinte código (ajustando os caminhos da python3 e da aplicação Python, conforme necessário):

do shell script "export LC_ALL=en_US.UTF-8; export LANG=en_US.UTF-8; /usr/local/bin/python3 '/Users/USER/FOLDER/SCRIPT.py' &> /dev/null &"

Ele inicia o aplicativo Python sem quaisquer janelas de terminal. A aplicação AppleScript pode ser personalizado com um ícone personalizado, como de costume, e pode ser colocado no Dock. Quando clicado, ele irá lançar o interpretador Python, que ainda aparece no Dock, mas sem janelas visíveis.

Eu acho que isso pode ser útil para outros usuários.

'console esconder' não esconde o Terminal no OS X. Ele esconde de Tk built-in console, que é realmente uma relíquia dos dias MacOS clássicos (e que ainda é comumente usado no Windows).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top