2

我正在尝试使用 python 脚本中的 cx_Freeze 创建可执行文件,但似乎 tkinter 模块的某些部分没有加载到可执行文件中。脚本文件包含导入语句:

from tkinter import *
from tkinter.filedialog import askopenfile, asksaveasfile
from tkinter.messagebox import *
import subprocess
import time

在我的脚本中,我有一些看起来像这样的代码:

f_outfile = filedialog.asksaveasfile(initialdir=r'c:\Program Files (x86)\LTC\LTSpiceIV')

当我从 IDLE shell 内部运行这个脚本时,它可以完美运行。我使用如下所示的 setup.py 文件创建了一个带有 cx_Freeze 的可执行文件:

from cx_Freeze import *

setup(name="voltage_substate_GUI",
  version="0.1",
  description="test",
  executables=[Executable("voltage_substate_GUI.pyw")],
  )

可执行文件的创建没有任何问题,但是当我运行可执行文件时,我在控制台窗口中收到错误消息

NameError: name 'filedialog is not defined'

然而,创建 GUI 的脚本的其余部分似乎工作得很好——所有按钮都工作以及所有 Entry() 项目等。

对这个问题有什么想法吗?

谢谢!

4

1 回答 1

2

出于某种原因,我不得不在我冻结的脚本中明确导入“filedialog”和“messagebox”子模块。

import tkinter.filedialog as fdialog
import tkinter.messagebox as msgbox
import tkinter

虽然“标签”、“按钮”、“框架”、“条目”等运行良好,但谁知道必须以这种方式导入其他多少。希望这可以帮助某人。

于 2015-02-03T16:46:15.257 回答