Jak ukryć okno konsoli podczas zamrażania aplikacji wxPython za pomocą cxFreeze?

Rozwijam aplikację Pythona przy użyciu wxPython i zamrażam ją przy użyciu cxFreeze. Wszystko wydaje się iść dobrze oprócz tego poniższego bitu:

Kiedy uruchamiam plik wykonywalny utworzony przez cxFreeze, wyskakuje puste okno konsoli. Nie chcę tego pokazywać. Mogę to jakoś ukryć?

Wydaje się, że nie jest to udokumentowane na stronie cxFreeze, a Googling nie pojawił się zbyt wiele oprócz podobnych problemów z Py2Exe.

Dzięki.
Author: Mridang Agarwalla, 2010-05-21

4 answers

To działało do pewnego stopnia, ale ma problemy. Mój program działa zarówno w trybie konsoli, jak i w trybie GUI. Po uruchomieniu z konsoli z argumentem --console uruchamia się w trybie konsoli. Kiedy postępowałem zgodnie z poniższą procedurą, to już nie działa, a mój program jest tylko aplikacją GUI.

Poniższy kod źródłowy pochodzi z przykładowego pliku w \Python\Lib\site-packages\cx_Freeze\samples\PyQt4\setup.py. Lekcja dnia. Przeczytaj 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)])
 19
Author: Mridang Agarwalla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-18 19:26:24

Dla Windows:

Musisz użyć linii takiej jak ta (użyj folderów plików i nazw odpowiednio)

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

Dodając opcję --base-name=Win32GUI okno konsoli nie pojawi się.

 18
Author: Antonio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-11 17:59:38

Jeśli używasz systemu Windows, możesz zmienić nazwę rozszerzenia skryptu" main " (uruchamiającego aplikację) na .pyw

 2
Author: Steven Sproat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-21 12:24:53

Opcja 1) Użyj gui2exe , aby użyć różnych opcji.

Opcja 2) zmodyfikuj swój setup.py z parametrem "base" jako takim.

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"
    )
 2
Author: fseto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-17 14:15:05