ПРОБЛЕМА РЕШЕНА.
проблема была с модулем jaraco, который я использовал для работы с буфером обмена, вместо этого я использовал pyperclip.
Я сделал приложение на python с tkinter, которое отлично работает, но я хотел сделать exe из него, чтобы оно было удобным для пользователей в Windows. Для этого я использовал библиотеку cx_Freeze, которая тоже отлично работает, но не всегда.
При создании exe с использованием cx_Freeze вы можете указать базовый параметр, если вы не дадите ничего, что откроет 2 окна, окно cmd и окно GUI для вашего приложения. Чтобы избавиться от окна cmd, вы можете указать «Win32GUI» в качестве базового параметра для cx_Freeze.
Это игнорирует окно cmd и просто открывает графический интерфейс, кажется, работает, но не всегда.
Иногда открытие exe-файла запускает процесс, но никакой графический интерфейс не отображается. Открыв cmd и перейдя в каталог вашего exe-файла и запустив его оттуда, вы фактически увидите GUI и исправите проблему, пока не перезагрузите компьютер (вы можете открыть приложение без cmd, если все работает до перезагрузки)
Похоже, что пока окно cmd находится в вашем оперативной памяти, графический интерфейс будет отображаться, в противном случае он "не знает" и не отображает графический интерфейс.
Код можно найти здесь:
https://github.com/GrishaDev/ClipMagic
clip.py
это все приложение
setup.py
это файл, используемый cx_Freeze для получения exe приложения, здесь вы указываете базовый параметр и т. д.
фрагмент кода, в котором проблема, скорее всего, (setup.py
):
import sys
from cx_Freeze import setup, Executable
# import os
# os.environ['TCL_LIBRARY'] = "C:\\Users\\Grisha\\AppData\\Local\\Programs\\Python\\Python35\\tcl\\tcl8.6"
# os.environ['TK_LIBRARY'] = "C:\\Users\\Grisha\\AppData\\Local\\Programs\\Python\\Python35\\tcl\\tk8.6"
import os.path
PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup(name="clipmagic",
version="1",
description="Extended clipboard",
options={'build_exe': {'includes': ["jaraco", "tkinter"], 'include_files':[
os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),
os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'),
'icon.ico',
]}},
executables=[Executable("clip.py", base=base, icon='icon.ico')])
#"Win32GUI"
Спасибо!