Скрыть окно консоли с помощью Tkinter и cx_Freeze - PullRequest
8 голосов
/ 02 апреля 2011

Я использую cx_freeze, чтобы заморозить приложение tkinter. Когда я запускаю exe-файл, я получаю чудесное ПОЛЕЗНОЕ окно консоли вместе с моим графическим интерфейсом tkinter.

Я хотел бы удалить / скрыть это бесполезное черное окно.

Я видел темы, которые предлагают следующее:

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

Приведенный выше код противоположен тому, что я хочу. Он скрывает мой графический интерфейс, пока остается бесполезное черное окно. Я бы хотел, чтобы все было наоборот.

Ответы [ 7 ]

14 голосов
/ 02 апреля 2011

Я помню, как читал где-то, что в Windows, если вы укажете расширение файла как .pyw, оно запустится с pythonw.exe (без окна консоли). Это работает для вас?

9 голосов
/ 07 июля 2012

Этот вопрос очень похож, но для wxPython и cx_Freeze.К счастью, получается, что внешний вид консоли можно настроить из сценария сборки, а не из исходного кода.Заимствуя два верхних ответа, уловка заключается в установке переменной base в вашем скрипте сборки cx_Freeze:

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

Вот соответствующая документация (хотя в ней явно не упоминаетсяbase управляет опцией консоли).

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

5 голосов
/ 11 декабря 2012

Сделайте точно так же, как сказал Гари, тогда:

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

Это будет работать cx_Freeze

2 голосов
/ 14 ноября 2011

У меня была та же проблема сегодня

То, что я использовал для компиляции моих программ на python, было py2exe, и исправление было очень простым, измените установочный файл, как показано ниже.Мой интерфейс написан на Tkinter

. Измените скрипт py2exe "setup.py" из:

Старый код Python:

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

Новый код Python:

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

После того, как я сделал это и перезапустил мой скрипт установки, приложение загрузилось и не показывало окно консоли.Единственное, с чем это связано - если ваше приложение отправляет команды печати в окно консоли, вы не увидите тему.Надеюсь, это поможет.

1 голос
/ 13 июня 2013

Если вы используете pyinstaller, используйте pyinstaller-gui.py В командной строке Windows введите

python pyinstaller-gui.py

Сначала будет сказано «Пожалуйста, используйте просто« pyinstaller.py ». Gui не поддерживается». Измените код, и вы сможете запустить это.

Появится всплывающее окно для выбора вашего скрипта и некоторых флажков. Отметьте «без консоли» (только для Windows)

Вот и все. Вы сделали!

Другой вариант: используйте параметр --noconsole при сборке. то есть:

python pyinstaller.py --noconsole yourscript.py

1 голос
/ 12 июля 2012

Я предполагаю, что под "черным окном" вы ссылаетесь на окно терминала. Чтобы отключить эту функцию, сохраните файл как расширение .pyw вместо .py

.
0 голосов
/ 11 марта 2015

Для меня опция --base-name Win32GUI работает.Вот пример:

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

...