Python Tkinter抛出Tcl错误

cha*_*ran 10 tk-toolkit tkinter python-2.7

我正在学习Python中的基本GUI,我遇到了一个示例,用于从Stack Overflow上的文件资源管理器中读取文件名.

from Tkinter import Tk
from tkFileDialog import askopenfilename
Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filename)
Run Code Online (Sandbox Code Playgroud)

当我尝试在IDLE中运行它时,这个特殊的脚本工作正常,但是如果我在Windows 7中从命令提示符处尝试,则不会运行.

Python版本:2.7.这是我得到的输出错误.

>>> from Tkinter import Tk
>>> from tkFileDialog import askopenfilename
>>> Tk().withdraw()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\Lib\lib-tk\Tkinter.py", line 1685, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: Can't find a usable init.tcl in the following directories:
C:/Python27/lib/tcl8.5 D:/PyProj/lib/tcl8.5 D:/lib/tcl8.5 D:/PyProj/library D:/library D:/tcl8.5.2/library D:/tcl8.5.2/library

This probably means that Tcl wasn't installed properly
Run Code Online (Sandbox Code Playgroud)

任何指向我在这里缺少的东西都可以提供很大的帮助.

小智 10

如果你在Windows上使用Virtualenv我在这里找到了一个解决方案:https://github.com/pypa/virtualenv/issues/93

我将"tcl"文件夹从C:\ Python27 \复制到新的Virtualenv的根目录,Tkinter.Tk()显示了一个没有抛出异常的新窗口.

我在Windows 7上运行Python 2.7.


pav*_*pav 7

安装Activestate Python和TCL后遇到类似的问题.我发现以下页面为我解决了问题:ActiveState Python安装问题.修复是将内容复制C:\Python27\tclC:\Python27\Lib.

另一个可能的解决方案(由用户i-shenl在同一问题上的不同ActiveState线程中给出)是将环境变量 设置$TCL_LIBRARY为指向tcl库文件夹(问题中为"C:/ Python27/tcl").如果您在系统范围或帐户范围内设置(通过系统属性),它将影响使用TCL库的其他程序(如果已安装).如果您正在使用Powershell,则可以在配置文件中设置此变量,以限制其对从shell运行的程序的影响.


Kud*_*nle 6

您只需将两个文件夹从tcl文件夹复制到Lib文件夹即可

tcl8.5和tk8.5

  • 这为我解决了问题。Windows 10,在 PowerShell 中运行 Python、Python 3.6.3、tcl8.6、tk8.6。尝试运行 matplotlib 时出现错误。复制文件夹后就可以了。多谢! (2认同)