Come posso nascondere la finestra della console quando il congelamento applicazioni wxPython con cxFreeze?

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

  •  04-10-2019
  •  | 
  •  

Domanda

Sto sviluppando un'applicazione Python utilizzando wxPython e il congelamento utilizzando cxFreeze. Tutto sembra andare bene a parte questo bit seguente:

Quando eseguo l'eseguibile creato da cxFreeze, una finestra di console vuota si apre. Non voglio darlo a vedere. C'è un modo ho potuto nasconderlo?

E non sembra essere documentato sul sito cxFreeze e usare Google non si presentò molto a parte alcuni problemi simili con SortA py2exe.

Grazie.

È stato utile?

Soluzione

Questa lavorato in una certa misura, ma ha problemi. Il mio programma viene eseguito sia in modalità console e una modalità GUI. Quando viene eseguito dalla console con un argomento --console viene eseguito in una modalità console. Quando ho seguito la procedura riportata di seguito, questo non funziona più e il mio programma è solo un'applicazione GUI poi.

Il seguente codice sorgente proviene da un file di esempio nella \Python\Lib\site-packages\cx_Freeze\samples\PyQt4\setup.py. Lezione del giorno. Leggere il file 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)])

Altri suggerimenti

Per Windows:

È necessario utilizzare una linea come questa (cartelle di file uso e nomi a seconda dei casi)

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

Con l'aggiunta dell'opzione --base-name=Win32GUI, non verrà visualizzata la finestra della console.

Se si utilizza Windows, si potrebbe rinominare l'estensione dello script "principale" (che lancia l'app) per .pyw

L'opzione 1) Utilizzare gui2exe per muck con varie opzioni.

L'opzione 2) Modifica la tua setup.py con 'base' dei parametri in quanto tale.

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"
    )
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top