gpt4 book ai didi

python - tkinter 程序使用 cx_Freeze 编译但程序不会启动

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:23 25 4
gpt4 key购买 nike

我正尝试按照本教程创建一个可执行文件

https://github.com/anthony-tuininga/cx_Freeze/tree/master/cx_Freeze/samples/Tkinter

经过一些调整后,我能够编译该项目,但是当我单击 .exe 时,鼠标加载动画会触发,但不会加载任何内容。这个问题以前曾被问过,但从未得到解决。

Where to start looking in the code when your .exe doesn't work after cx_freeze?

我的应用程序文件

from tkinter import *
from tkinter import messagebox

root = Tk()
root.title('Button')
print("something")
new = messagebox.showinfo("Title", "A tk messagebox")
root.mainloop()

我的设置.py

import sys
from cx_Freeze import setup, Executable

base = None
if sys.platform == 'win32':
base = 'Win32GUI'

executables = [
Executable('SimpleTkApp.py', base=base)
]

setup(name='simple_Tkinter',
version='0.1',
description='Sample cx_Freeze Tkinter script',
executables= [Executable("SimpleTkApp.py", base=base)])

此外,我一直在手动添加 TCL/TK 库

set TK_LIBRARY=C:\...\tk8.6  etc

我的配置:python 3.7,cx_Freeze 5.1.1

任何帮助将不胜感激,我什至不知道从哪里开始。

最佳答案

尝试修改你的setup.py如下:

import sys
from cx_Freeze import setup, Executable

import os
PYTHON_INSTALL_DIR = os.path.dirname(sys.executable)
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')

include_files = [(os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'), os.path.join('lib', 'tk86t.dll')),
(os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'), os.path.join('lib', 'tcl86t.dll'))]

base = None
if sys.platform == 'win32':
base = 'Win32GUI'

executables = [Executable('SimpleTkApp.py', base=base)]

setup(name='simple_Tkinter',
version='0.1',
description='Sample cx_Freeze Tkinter script',
options={'build_exe': {'include_files': include_files}},
executables=executables)

这应该适用于 cx_Freeze 版本 5.1.1(当前版本)。在此版本中,包含的模块位于构建目录的子目录 lib 中。如果您使用 5.0.1 或更早版本,请设置

include_files = [os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),
os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll')]

相反。

另见 Getting "ImportError: DLL load failed: The specified module could not be found" when using cx_Freeze even with tcl86t.dll and tk86t.dll added inpython tkinter exe built with cx_Freeze for windows won't show GUI

编辑:

另一个问题是 cx_Freeze 在 python 3.7 中有一个错误,该错误尚未得到纠正。参见 Cx_freeze crashing Python3.7.0 .您可以在那里找到错误修复的链接,您应该手动应用该链接(根据 OP,这解决了问题,请参阅评论)。

关于python - tkinter 程序使用 cx_Freeze 编译但程序不会启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52785654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com