2010-05-21 20 views
30

Je développe une application Python en utilisant wxPython et la gèle en utilisant cxFreeze. Tout semble aller bien à part ce bit suivant:Comment puis-je cacher la fenêtre de la console lors du gel des applications wxPython avec cxFreeze?

Lorsque j'exécute l'exécutable créé par cxFreeze, une fenêtre de console vide apparaît. Je ne veux pas le montrer. Y a-t-il un moyen de le cacher?

Il semble ne pas être documenté sur le site cxFreeze et Googling ne s'est pas démarqué beaucoup de quelques problèmes de sorta similaires avec Py2Exe.

Merci.

Répondre

18

Cela a fonctionné dans une certaine mesure, mais il a des problèmes. Mon programme fonctionne à la fois en mode console et en mode graphique. Lorsqu'il est exécuté à partir de la console avec un argument --console, il s'exécute en mode console. Lorsque j'ai suivi la procédure ci-dessous, cela ne fonctionne plus et mon programme n'est alors qu'une application graphique.

Le code source suivant provient d'un exemple de fichier dans \Python\Lib\site-packages\cx_Freeze\samples\PyQt4\setup.py. Leçon du jour. Lisez le fichier 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 vous utilisez Windows, vous pouvez renommer votre poste de script « principal » (qui lance l'application) à .pyw

+3

Cela n'a pas semblé fonctionner. Je l'ai renommé PYW mais il est apparu. –

2

Option 1) Utilisez gui2exe pour mastiquer avec différentes options.

Option 2) Modifiez votre fichier setup.py avec le paramètre 'base' en tant que tel.

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

Pour Windows:

Vous devez utiliser une ligne comme celui-ci (dossiers de fichiers d'utilisation et noms selon le cas)

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

En ajoutant l'option --base-name=Win32GUI, la fenêtre de la console n'apparaîtra .