¿Cómo puedo ocultar la ventana de la consola al congelar las aplicaciones wxPython con cxFreeze?

StackOverflow https://stackoverflow.com/questions/2880316

  •  04-10-2019
  •  | 
  •  

Pregunta

Estoy desarrollando una aplicación Python usando wxPython y congelarlo usando cxFreeze. Todo parece ir bien aparte de este bit siguiente:

Al ejecutar el archivo ejecutable creado por cxFreeze, una ventana de consola en blanco aparece. No quiero mostrarlo. ¿Hay alguna manera de que pudiera ocultarlo?

No parece estar documentado en el sitio cxFreeze y googlear no apareció mucho aparte de algunos problemas similares con sorta py2exe.

Gracias.

¿Fue útil?

Solución

Esto funcionó hasta cierto punto, pero tiene problemas. Mi programa se ejecuta tanto en un modo de consola y un modo de interfaz gráfica de usuario. Cuando se ejecuta desde la consola con un argumento --console se ejecuta en un modo de consola. Cuando he seguido a continuación del procedimiento, esto ya no funciona y mi programa es sólo una aplicación GUI a continuación.

El siguiente código fuente proviene de un archivo de ejemplo en el \Python\Lib\site-packages\cx_Freeze\samples\PyQt4\setup.py. Lección del día. Leer el 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)])

Otros consejos

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 la consola.

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

Opción 1) Uso gui2exe de lodo con varias opciones.

Opción 2) modificar su setup.py con 'base' parámetro 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"
    )
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top