Python 3.2 Cx_Freeze不会编译整个tkinter

时间:2014-04-28 14:28:24

标签: python python-3.x compilation tkinter cx-freeze

我已经制作了这个小计算器,我尝试用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来正确编译?

2 个答案:

答案 0 :(得分:2)

您必须使用tkinter窗口创建自定义消息框,因为在尝试启动除按F5按钮之外的程序时,实际的消息框不存在。换句话说,你无法解决它。你必须创建新窗口。

答案 1 :(得分:0)

您也忘了添加基本选项:

    setup(
        name = 'Kinetic Energy Calculator',
        version = '0.1',
        description = 'Calculate',
        executables = [Executable('calculator1.pyw', base="Win32GUI")]
        )

虽然它仍然无效,但现在可以识别tkinter。