我已经制作了这个小计算器,我尝试用cx_freeze进行压缩。它计算一些东西,并在messagebox中给出答案。当我从IDLE运行它时工作正常,但是当我从.exe运行它时,它会打开用Tkinter创建的GUI,但是如果我按下我的计算按钮,它会弹出消息框,它会在dos shell中给出以下错误:
' Tkinter回调中的例外情况 Traceback(最近一次调用最后一次): 文件" C:\ Python32 \ lib \ tkinter__init __。py",第1399行,调用 return self.func(* args) 在energyKinetic中输入文件" calculator1.pyw",第46行 NameError:全局名称' messagebox'未定义'
我使用以下' setup.py':
from cx_Freeze import setup, Executable
setup(
name = 'Kinetic Energy Calculator',
version = '0.1',
description = 'Calculate',
executables = [Executable('calculator1.pyw')],
)
并使用' C:\ Python32> python setup.py build'运行它。来自cmd。
计算器本身的代码只是siple Tkinter GUI,带有按钮,标签,条目和消息框,所以我没有看到在这里发布它的共鸣,除非当然有人会发现它对我来说是必要的这样做。 那么,有没有什么重要的东西我没有放入setup.py来正确编译?
答案 0 :(得分:2)
您必须使用tkinter窗口创建自定义消息框,因为在尝试启动除按F5按钮之外的程序时,实际的消息框不存在。换句话说,你无法解决它。你必须创建新窗口。
答案 1 :(得分:0)
您也忘了添加基本选项:
setup(
name = 'Kinetic Energy Calculator',
version = '0.1',
description = 'Calculate',
executables = [Executable('calculator1.pyw', base="Win32GUI")]
)
虽然它仍然无效,但现在可以识别tkinter。