Pregunta

Estoy intentando ocultar el terminal cuando lanzo una aplicación basada en GUI Tkinter, pero cuando hago doble clic en el archivo app.py en OSX, aparece la ventana del terminal. He intentado cambiar la extensión a .pyw y he intentado iniciarla con / usr / bin / pythonw, pero no importa qué, la ventana de la Terminal sigue apareciendo.

Incluso he intentado agregar el comando try / except a continuación, pero cuando lo ejecuto, aparece el error: 'nombre de comando inválido " consola "' En la ventana del 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()

No he podido encontrar ninguna forma de ocultar la ventana de Terminal para que no aparezca. ¿Alguien tiene alguna idea?

¿Fue útil?

Solución

Al hacer doble clic en un archivo .py en OS X, es probable que esté iniciando una instancia de Python gui a través del Python Launcher.app que se suministra con OS X Pythons. Puede verificarlo seleccionando el archivo .py en el Finder y haciendo un Obtener información en él. Python Launcher es una aplicación muy simple que inicia Python a través de un comando Terminal.app. Para iniciar directamente su propia aplicación Python GUI, el enfoque preferido es crear una aplicación simple utilizando py2app . Hay un breve tutorial aquí .

EDITAR:

Hay otras formas, por supuesto, pero lo más probable es que cualquiera de ellas esté agregando más niveles de direccionamiento indirecto. Para hacer un iniciable normal, " doble clic " aplicación, necesita algún tipo de estructura de la aplicación. Eso es lo que py2app le permite crear directamente.

Una alternativa muy simple es aprovechar la capacidad del editor de AppleScript para crear una aplicación de inicio. En el editor AppleScript :

  • / Aplicaciones / Utilidades / AppleScript Editor.app en OS X 10.6

  • / Aplicaciones / AppleScript / Script Editor.app en 10.5

crea un nuevo script similar a este:

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

y luego Guardar como .. con Formato de archivo - > Solicitud . Luego tendrás una aplicación de doble clic que lanzará otra aplicación. Puedes crear algo similar con Automater.app de Apple. Pero, debajo de las cubiertas, están haciendo algo similar a lo que py2app hace por ti, solo con más capas en la parte superior.

Otros consejos

Agregando a la respuesta de Ned Deily, en mi caso, cuando intenté iniciar la aplicación Python utilizando una aplicación AppleScript, inicialmente no funcionó. Descubrí que tiene algo que ver con algún tipo de error de codificación (estoy usando UTF-8 y en el pasado sentí la necesidad de configurarlo en UTF-8).

Luego de una investigación más profunda, descubrí que puedo lograr esto creando una aplicación AppleScript con el siguiente código (ajustando las rutas de acceso de python3 y de la aplicación de Python según sea necesario):

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' & amp; > / dev / null & amp; "

Lanza la aplicación Python sin ninguna ventana de Terminal. La aplicación AppleScript se puede personalizar con un icono personalizado como de costumbre y se puede colocar en el Dock. Cuando se haga clic, se iniciará el intérprete de Python, que aún se muestra en el Dock, pero sin ventanas visibles.

Creo que esto puede ser útil para otros usuarios.

'oculta la consola' no oculta la Terminal en OS X. Oculta la consola incorporada de Tk, que en realidad es una reliquia de los días de MacOS Classic (y que todavía se usa comúnmente en Windows).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top