Как я могу скрыть окно консоли при замораживании приложений wxPython с помощью cxFreeze?

Я разрабатываю приложение Python с помощью wxPython и замораживаю его с помощью cxFreeze. Кажется, все идет хорошо, кроме этого следующего бита:

Когда я запускаю исполняемый файл, созданный cxFreeze, появляется пустое окно консоли. Я не хочу это показывать. Можно ли как-нибудь скрыть это?

Похоже, что это не задокументировано на сайте cxFreeze, и поиск в Google не дал особых результатов, кроме некоторых подобных проблем с Py2Exe.

Спасибо.


person Mridang Agarwalla    schedule 21.05.2010    source источник


Ответы (4)


Для Windows:

Вы должны использовать такую ​​​​строку (используйте папки с файлами и имена по мере необходимости)

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

При добавлении опции --base-name=Win32GUI окно консоли не появится.

person Antonio    schedule 10.06.2011

В какой-то степени это сработало, но есть проблемы. Моя программа работает как в режиме консоли, так и в режиме графического интерфейса. При запуске из консоли с аргументом --console он запускается в консольном режиме. Когда я выполнил описанную ниже процедуру, это больше не работает, и тогда моя программа является только приложением с графическим интерфейсом.

Следующий исходный код взят из примера файла в каталоге \Python\Lib\site-packages\cx_Freeze\samples\PyQt4\setup.py. Урок дня. Прочтите 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)])
person Mridang Agarwalla    schedule 21.05.2010

Если вы используете Windows, вы можете переименовать расширение «основного» скрипта (которое запускает приложение) в .pyw.

person Steven Sproat    schedule 21.05.2010
comment
Это не сработало. Я переименовал его в PYW, но он все равно появился. - person Mridang Agarwalla; 21.05.2010

Вариант 1. Используйте gui2exe, чтобы использовать различные варианты.

Вариант 2) Измените файл setup.py с параметром «база» как таковой.

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"
    )
person fseto    schedule 30.07.2010