2011-04-02 60 views
7

Estoy usando cx_freeze para congelar una aplicación tkinter. Cuando ejecuto el exe obtengo una ventana de consola maravillosamente inútil junto con mi interfaz gráfica de usuario de tkinter.Ocultar la ventana de la consola con Tkinter y cx_Freeze

Me gustaría eliminar/ocultar esta ventana negra inútil.

que he visto las discusiones que sugieren lo siguiente:

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

El código anterior hace lo contrario de lo que quiero. Oculta mi GUI, mientras que la ventana negra inútil permanece. Me gustaría que fuera al revés.

Respuesta

7

Este question es muy similar, pero para wxPython y cx_Freeze. Afortunadamente, resulta que la apariencia de la consola se puede configurar desde el script de compilación, en lugar del código fuente. Los préstamos de las dos respuestas más, el truco está estableciendo la variable base en su cx_Freeze escritura de la estructura:

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.> 

Esta es la relevante documentation (aunque no menciona explícitamente que base Controla la opción de la consola).

Además, sólo porque es interesante, un answer a una pregunta diferente resuelve el problema de la creación de una aplicación GUI con o sin opción de modo de consola, lo cual me pareció muy fresco.

+1

Esta respuesta funciona, sin embargo, debe agregar base = base en executables = en su archivo setup.py. Vea la respuesta de VICTOR a continuación para un ejemplo. – Phoenix

13

Recuerdo haber leído en alguna parte que en Windows si especificas tu extensión de archivo como .pyw, se ejecutará con pythonw.exe (sin una ventana de consola). Eso funciona para ti?

+0

gracias por la sugerencia, pero esto no funcionó. – Rhys

+1

¿Puedes intentar ejecutar manualmente tu programa con 'pythonw.exe' en lugar de' python.exe' y ver si eso ayuda? –

+2

¡Funcionó para mí simplemente cambiando la extensión! (gana 7 pro 64x, Python 3.3) Gracias Noufal Ibrahim – f2lollpll

2

que tenían el mismo problema hoy

lo que estaba usando para recopilar mis programas pitón fue py2exe y la solución era muy simple modificar el archivo de configuración como se muestra a continuación. Mi interfaz está escrito con Tkinter

modificar el "setup.py" guión py2exe de:

Código

Antiguo Python:

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

nuevo código Python:

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

después de que hice esto y reran mi script de instalación la aplicación cargada y no mostró la ventana de la consola. La única cosa con esto es que si su aplicación envía comandos de impresión a la ventana de la consola, no verá el tema. Espero que esto ayude.

+0

¿Por qué no creo que funcione para mí? He intentado todas las variaciones de ventana/consola que pude encontrar. –

+0

pero la pregunta es sobre cx_freeze .. !! – Fr0zenFyr

1

Supongo que por "ventana negra" se está refiriendo a la ventana del terminal. Con el fin de desactivar esto desde apareciendo, guardar el archivo como una extensión .py .pyw en lugar de

+0

oh, buen truco. – thecoshman

4

hacer exactamente igual que Gary dijo, entonces:

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

Esto funcionará cx_Freeze

1

Si usando el instalador de pyinstaller, pyinstaller-gui.py En Windows tipo de línea de comandos

pitón pyinstaller-gui.py

Esto primero decir "Por favor, use sólo 'pyinstaller.py'. Gui no se mantiene." Cambie el código a la última y podrá ejecutar esto.

Mostrará una ventana emergente para seleccionar su secuencia de comandos y algunos checkboxex. Compruebe en 'no hay consola (solo ventanas)

Eso es todo. ¡Estás listo!

Otra opción: use --noconsole opción durante la construcción. es decir:

pitón pyinstaller.py --noconsole yourscript.py

0

Para mí usando la opción --base-name Win32GUI obras. He aquí un ejemplo:

cxfreeze your_python_file.py --base nombre Win32GUI your_target_dir --target-dir

Cuestiones relacionadas