2011-04-02 9 views
7

के साथ कंसोल विंडो छुपाएं मैं एक tkinter ऐप को फ्रीज करने के लिए cx_freeze का उपयोग कर रहा हूं। जब मैं exe चलाता हूं मुझे अपने tkinter जीयूआई के साथ एक अद्भुत यूएसईएलएसएस कंसोल विंडो मिलता है।टिंकर और सीएक्स_फ्रीज़

मैं इस बेकार काले खिड़की को हटाना/छिपाना चाहता हूं।

root = tkinter.Tk() 
root.withdraw() 

ऊपर कोड जो मैं चाहता की विपरीत है:

मैं धागे कि सुझाव है कि निम्नलिखित देखा है। यह मेरे जीयूआई को छुपाता है, जबकि बेकार काला खिड़की बनी हुई है। मैं इसे चारों ओर एक और तरीका होना चाहता हूँ।

उत्तर

7

यह question बहुत समान है, लेकिन WxPython और cx_Freeze के लिए। सौभाग्य से, यह पता चला है कि कंसोल की उपस्थिति को स्रोत कोड की बजाय बिल्ड स्क्रिप्ट से कॉन्फ़िगर किया जा सकता है। शीर्ष दो जवाब से उधार, चाल अपने cx_Freeze निर्माण लिपि में base चर स्थापित कर रही है:

import sys 
from cx_Freeze import setup, Executable 

base = None 
if (sys.platform == "win32"): 
    base = "Win32GUI" # Tells the build script to hide the console. 

# <The rest of your build script goes here.> 

यहाँ प्रासंगिक documentation (हालांकि यह स्पष्ट रूप से उल्लेख नहीं है कि base नियंत्रण सांत्वना विकल्प)।

इसके अलावा, सिर्फ इसलिए कि यह दिलचस्प है, answer एक अलग प्रश्न के लिए एक कंसोल मोड विकल्प के साथ या बिना एक GUI ऐप बनाने का मुद्दा हल करता है, जिसे मैंने बहुत अच्छा बताया था।

+1

यह उत्तर काम करता है, हालांकि आपको अपनी setup.py फ़ाइल में execables में बेस = बेस जोड़ना होगा। उदाहरण के लिए नीचे विक्टर जवाब देखें। – Phoenix

13

मुझे याद है कि विंडोज़ पर कहीं भी अगर आप .pyw के रूप में अपना फ़ाइल एक्सटेंशन निर्दिष्ट करते हैं, तो यह pythonw.exe (कंसोल विंडो के बिना) लॉन्च होगा। क्या ये तुम्हारे लिए कारगर है?

+0

धन्यवाद, लेकिन यह काम नहीं किया। – Rhys

+1

क्या आप अपने प्रोग्राम को 'python.exe' के बजाय मैन्युअल रूप से 'pythonw.exe' के साथ लॉन्च करने का प्रयास कर सकते हैं और देख सकते हैं कि इससे मदद मिलती है? –

+2

यह मेरे लिए सिर्फ विस्तार बदल रहा है! (7 प्रो 64x जीतें, पायथन 3.3) धन्यवाद नौफल इब्राहिम – f2lollpll

2

मैं आज

एक ही समस्या थी क्या मैं संकलित करने के लिए मेरी अजगर कार्यक्रमों py2exe था उपयोग कर रहा था और ठीक जैसा कि नीचे दिखाया सेटअप फ़ाइल को संशोधित बहुत आसान था। मेरे इंटरफेस Tkinter

साथ लिखा है से "setup.py" py2exe स्क्रिप्ट को संशोधित:

पुराने अजगर कोड:

from distutils.core import setup 
import py2exe 
setup(console=['app.py']) 

नई पायथन कोड:

from distutils.core import setup 
import py2exe 
setup(windows=['app.py']) 

के बाद मैंने किया यह और मेरे सेटअप स्क्रिप्ट को फिर से लोड किया गया एप्लिकेशन को लोड किया गया और कंसोल विंडो नहीं दिखाया। इसके साथ एकमात्र चीज यह है कि यदि आपके पास कंसोल विंडो में प्रिंट कमांड भेजने का आपका एप्लिकेशन है तो आपको थीम नहीं दिखाई देगी। आशा है कि ये आपकी मदद करेगा।

+0

मेरे लिए काम क्यों नहीं लगता? मैंने खिड़की/कंसोल के हर बदलाव की कोशिश की है जो मुझे मिल सकती है। –

+0

लेकिन सवाल cx_freeze के बारे में है .. !! – Fr0zenFyr

1

मुझे लगता है कि "ब्लैक विंडो" आप टर्मिनल विंडो का जिक्र कर रहे हैं। ऊपर पॉपिंग से इसे निष्क्रिय करने के लिए, .py

+0

ओह, अच्छी चाल। – thecoshman

4

के बजाय एक .pyw विस्तार के रूप में अपनी फ़ाइल को सहेजने बिल्कुल वैसे ही जैसे गैरी ने कहा है, तो:

setup(name="ur package name", 
     version="ur package version", 
     description="as above", 
     executables=[Executable("ur_script.py", base=base)] 

यह cx_Freeze

1

तो काम करेंगे pyinstaller का उपयोग pyinstaller-gui का उपयोग कर।py विंडोज कमांड लाइन प्रकार में

अजगर pyinstaller-gui.py

यह पहली कहेंगे "सिर्फ 'pyinstaller.py' का उपयोग करें। गुई बनाए रखा नहीं है।" कोड l'il बिट बदलें और आप इसे चलाने में सक्षम होंगे।

यह आपकी स्क्रिप्ट और कुछ चेकबॉक्स का चयन करने के लिए एक विंडो पॉप अप दिखाएगा। 'कंसोल (केवल विंडोज़)

पर जांचें। आप कर चुके हैं!

एक और विकल्प: इमारत के दौरान - noconsole विकल्प का उपयोग करें। अर्थात:

अजगर pyinstaller.py --noconsole yourscript.py

0

मेरे लिए विकल्प --base-name Win32GUI काम करता है का उपयोग कर। यहाँ एक उदाहरण है:

cxfreeze your_python_file.py --base नाम Win32GUI --target-निर्देशिका your_target_dir सुझाव के लिए

संबंधित मुद्दे