2010-07-18 101 views
19

Tengo un programa Python que usa Qt (PyQt4 de hecho) y cuando lo inicio desde main.py, obtengo una ventana de consola y la ventana GUI (en Windows, por supuesto)Ocultando la ventana de la consola de la aplicación Python GUI con py2exe

Luego compilo mi programa con py2exe y main.exe se crea con éxito. Sin embargo, si ejecuto main.exe (esto es lo que harán los usuarios del programa) aún aparece la ventana de la consola de Python y todo el texto de depuración se edita en esa ventana.

Quiero ocultar la ventana de línea de cmd cuando se está ejecutando mi aplicación y quiero que solo mi GUI sea visible para el usuario cuando se ejecute desde el archivo .exe.

¿Es esto posible?

Respuesta

27

Sí, es posible.

Si uso

setup(console=['__main__.py'], options={"py2exe":{"includes":["sip"]}}) 

Se crea una aplicación de consola, sin embargo si uso

setup(windows=['__main__.py'], options={"py2exe":{"includes":["sip"]}}) 

que no muestra la consola en el archivo .exe. Pero la salida se descarga en el archivo main.exe.log en la carpeta .exe. Ten cuidado.

+2

Para suprimir la salida puede redirigir stdout como en http://coreygoldberg.blogspot.com/2009/05/python-redirect-or-turn-off-stdout-and.html o a alguna otra instalación de registro. – ars

+1

Para mí, el "sorbo" no fue reconocido, pero pude construir mi exe y hacerlo funcionar simplemente usando "setup (windows = ['fileName.py'])" –

+0

Esta solución no funciona para mí . Esta es la configuración de mi código ( options = {'py2exe': {'bundle_files': 1, 'compressed': True}}, console = ["main.pyw"], zipfile = None, ) ' –

6

Dudo que esto tenga un efecto en py2exe, pero está relacionado con la pregunta. Para ejecutar una GUI de Python en Windows sin la terminal, use pythonw.exe en lugar de python.exe. Esto debería suceder automáticamente si finalizas el nombre del archivo con ".pyw".

2

Esto puede no estar directamente relacionado con su pregunta, pero creo que vale la pena intentarlo.

Lo puede hacer fácilmente Utilizando PyInstaller usando el siguiente código.

pyinstaller -w myscript.py 

Tan simple como eso y todo está resuelto.

Cuestiones relacionadas