2010-05-21 19 views
30

wxPython kullanarak bir python uygulaması geliştiriyorum ve cxFreeze kullanarak donuyorum. Her şey aşağıdaki gibi biraz daha iyi görünüyor:wxPython uygulamalarını cxFreeze ile dondururken konsol penceresini nasıl gizleyebilirim?

cxFreeze tarafından oluşturulan yürütülebilir dosyayı çalıştırdığımda boş bir konsol penceresi açılır. Göstermek istemiyorum. Onu saklayabilmemin bir yolu var mı?

CxFreeze sitesinde belgelenmiş gibi görünmüyor ve Googling, Py2Exe ile bazı benzer sorta sorunlarından çok daha fazla ayrılmadı.

Teşekkürler. Eğer Windows kullanıyorsanız

cevap

18

.pyw için "ana" komut dosyasının uzantısını (söz konusu uygulamayı başlattı) adlandırmak olabilir ama sorunlar vardır. Programım hem konsol modunda hem de GUI modunda çalışır. Konsoldan bir --console bağımsız değişken ile çalıştırıldığında konsol modunda çalışır. Aşağıdaki prosedürü takip ettiğimde, bu artık işe yaramıyor ve programım sadece bir GUI uygulaması.

Aşağıdaki kaynak kodu, \Python\Lib\site-packages\cx_Freeze\samples\PyQt4\setup.py'daki bir örnek dosyadan gelir. Günün dersi. README'yi okuyun.

# 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

, sen bu bir ölçüde çalışmış

+3

Bu işe yaramadı. Onu PYW olarak yeniden adlandırdım ama yine de patladı. –

2

Seçenek 1) Çeşitli seçeneklerle karıştırmak için gui2exe kullanın.

Seçenek 2) Setup.py dosyanızı 'base' parametresiyle değiştirin. Windows için

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

:

Sen --base-name=Win32GUI seçeneği ekleyerek (uygun olarak kullanılması dosya klasörleri ve isimleri) bir böyle hattı

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

kullanmak zorunda, konsol penceresi görünmez .

İlgili konular