2010-05-21 14 views
30

Estoy desarrollando una aplicación Python usando wxPython y congelandola usando cxFreeze. Todo parece ir bien aparte de este bit siguiente:¿Cómo puedo ocultar la ventana de la consola al congelar aplicaciones wxPython con cxFreeze?

Cuando ejecuto el ejecutable creado por cxFreeze, aparece una ventana de consola en blanco. No quiero mostrarlo. ¿Hay alguna forma de que pueda esconderlo?

Parece que no está documentado en el sitio cxFreeze y Google no apareció mucho aparte de algunos problemas similares similares con Py2Exe.

Gracias.

Respuesta

18

Esto funcionó hasta cierto punto, pero tiene problemas. Mi programa se ejecuta tanto en modo consola como en modo GUI. Cuando se ejecuta desde la consola con un argumento --console, se ejecuta en modo consola. Cuando seguí el procedimiento a continuación, esto ya no funciona y mi programa es solo una aplicación GUI.

El siguiente código fuente proviene de un archivo de muestra en el \Python\Lib\site-packages\cx_Freeze\samples\PyQt4\setup.py. Lección del día Lea el archivo README.

# A simple setup script to create an executable using PyQt4. This also 
# demonstrates the method for creating a Windows executable that does not have 
# an associated console. 
# 
# PyQt4app.py is a very simple type of PyQt4 application 
# 
# Run the build process by running the command 'python setup.py build' 
# 
# If everything works well you should find a subdirectory in the build 
# subdirectory that contains the files needed to run the application 

import sys 

from cx_Freeze import setup, Executable 

base = None 
if sys.platform == "win32": 
    base = "Win32GUI" 

setup(
     name = "simple_PyQt4", 
     version = "0.1", 
     description = "Sample cx_Freeze PyQt4 script", 
     executables = [Executable("PyQt4app.py", base = base)]) 
2

Si se está utilizando Windows, puede cambiar el nombre de su extensión "principal" de la escritura (la que se lanza la aplicación) a .pyw

+3

Esto no pareció funcionar. Lo renombré a PYW pero aún apareció. –

2

Opción 1) Use gui2exe para eliminar con varias opciones.

Opción 2) Modifique su setup.py con el parámetro 'base' como tal.

GUI2Exe_Target_1 = Executable(
    # what to build 
    script = "rf_spi.py", 
    initScript = None, 
    base = 'Win32GUI', # <-- add this 
    targetDir = r"dist", 
    targetName = "rf_spi.exe", 
    compress = True, 
    copyDependentFiles = False, 
    appendScriptToExe = False, 
    appendScriptToLibrary = False, 
    icon = r"wireless.ico" 
    ) 
18

Para Windows:

Usted tiene que usar una línea como esta (carpetas de archivos de uso y nombres según el caso)

C:/Python/Scripts/cxfreeze C:/Python/Code/yourprogram.py --base-name=Win32GUI --target-dir C:/Python/Dist 

Al añadir la opción --base-name=Win32GUI, no aparecerá la ventana de consola .

Cuestiones relacionadas