Скрыть окно консоли с помощью Tkinter и CX Freeze

Я использую cx_freeze для замораживания приложения tkinter. Когда я запускаю exe, я получаю удивительно бесполезное окно консоли вместе с моим Tkinter GUI.

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

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

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

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

7 ответов


этой вопрос очень похоже, но для 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 управление консоли опцион.)

кроме того, просто потому, что это интересно, an ответ к другому вопросу решает проблему создания приложения GUI с или без опции консольного режима, что я думал, было очень круто.


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


делайте точно так, как сказал Гэри, затем:

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

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


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

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

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

Старый Код Python:

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

Новый Код Python:

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

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


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


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

python pyinstaller-gui.py

Это сначала скажет: "пожалуйста, используйте только "pyinstaller.py". Gui не поддерживается."Изменить код я немного и вы сможете запустить это.

Он будет показывать всплывающее окно, чтобы выбрать свой сценарий и некоторые checkboxex. Проверь нет консоли(только для Windows)


для меня, используя опцию --base-name Win32GUI строительство. Вот пример:

cxfreeze your_python_file.py --базовое имя Win32GUI --target-dir your_target_dir