2010-05-21 2 views
30

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

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

Это не похоже на документацию на сайте cxFreeze, и Googling не сильно отличался от некоторых подобных проблем с Py2Exe.

Спасибо.

ответ

18

Это работал в какой-то степени, но у него есть проблемы. Моя программа работает как в режиме консоли, так и в режиме графического интерфейса. При запуске с консоли с аргументом --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)]) 
2

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

+3

Это, похоже, не работает. Я переименовал его в PYW, но он все же появился. –

2

Вариант 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" 
    ) 
18

Для Windows:

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

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

Добавляя опцию --base-name=Win32GUI, консольное окно не появится ,