当前位置: 首页 > 面试题库 >

tkinter程序使用cx_Freeze编译,但程序无法启动

郎诚
2023-03-14
问题内容

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

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

进行一些调整后,我可以编译项目,但是当我单击.exe时,会触发加载鼠标的动画,但没有任何加载。之前曾问过这个问题,但从未解决过。

我的应用程式档案

from tkinter import *
from tkinter import messagebox

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

我的setup.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')]


 类似资料:
  • 问题内容: 我想安装rJava,但没有用。当我在控制台中键入R CMD javareconf时,出现以下错误: 任何想法如何解决? 问题答案: 该文件是JDK安装的一部分。您可能没有正确安装Java JDK。从此处下载Oracle Java ,或使用软件包管理器。 如果您已经安装了Java JDK,则将JAVA_HOME环境变量设置为指向JDK目录。

  • 我试图开始一个项目与Angular,但我不能进一步因为错误: “在multi./src/styles.css./node_modules/bootstrap/dist/css/bootstrap.min.css模块中找不到错误:” 依赖关系如下: json(相关部分): devDependencies: 我已经尝试了stackoverflow的所有解决方案,但都没有效果。我试过: 我尝试过组合不同

  • 当我打f5我得到这个文本在调试窗口 javac版本展示 java版本 我试图编译的代码 路径、JAVA_HOME和JRE_HOME设置正确。调试已安装的加载项。我可以编译和运行相同的代码在InteliJ IDEA或使用java(文件),javac(文件),它会工作正常,但我不知道为什么它不工作在vscode.

  • 我试图用TBB和lambda表达式编写一个基本的C程序,但我无法编译它<代码> 和编译器消息: 我尝试了编译器标志"-std=c 11"和"-std=gnu 11",然后输出: 我使用的是Fedora18(当然安装了tbb和tbb-devel软件包)。 有人有什么想法吗?代码从此处复制:http://software.intel.com/en-us/blogs/2009/08/03/paralle

  • 以下是错误: 扑动医生输出: []Flutter(Channel stable,v1.7.8+Hotfix.4,在Linux上,locale en_IN)•Flutter版本1.7.8+Hotfix.4,在/home/sagar/development/Flutter•Framework修订版20E59316B8(两周前),2019-07-18 20:04:33-0700•Engine修订版fee