tkinter TclError: can't find package treectrl

tkinter TclError: can't find package treectrl

刚刚安装了 tktreectrl,如本教程所示: https://www.youtube.com/watch?v=ddpYVA-7wq4 但是当我尝试 运行 我的程序时出现此错误。

Traceback (most recent call last):
File "E:/Python/Competition/Competition.py", line 36, in <module>
listbox = TkTreectrl.MultiListbox(window)
File "E:\Programs\Python\lib\site-packages\TkTreectrl\MultiListbox.py",line 50, in __init__
Treectrl.__init__(self, master, showroot=showroot, **kw)
File "E:\Programs\Python\lib\site-packages\TkTreectrl\Treectrl.py", line 489, in __init__
ver = master.tk.call('package', 'require', 'treectrl')
_tkinter.TclError: can't find package treectrl

关于我做错了什么有什么想法吗?

这可能不是一个详尽的答案,但可能会有所帮助。

可能是因为你的tcl/tk版本没有包含名为treectrl的子包,出现如下错误:

_tkinter.TclError: can't find package treectrl

您正在为 tkinter 使用 TkTreectrl 的包装器库在某处有此声明:

ver = master.tk.call('package', 'require', 'treectrl')

这意味着您正在尝试从 tk 导入包 treectrl,但显然该包不存在。我的建议是检查您的 tcl/tk 版本,然后检查它是否包含 treectrl.

您可以使用以下命令(在 Python 3 上)检查您的 tcltk 版本:

>>> import tkinter
>>> tkinter.TkVersion
8.5
>>> tkinter.TclVersion
8.5
>>>

也许可以从下面的 link 中检查 treectrl 软件包是否包含在 Tk 8.5 版中:https://www.tcl.tk/man/tcl8.5/

同样,如果您的 tcl/tk 版本与我的不同,您也可以这样做。

我的猜测是您需要先安装 treectrl,这可能是 extension 用于您的 tcl/tk 发行版。

我在 LINUX 中安装 TkTreetrl 时遇到此错误。 这个问题发生在 TCL 找不到 treectrl 包。 要解决这个问题,您必须找到 TCL 正在寻找 treectrl 包的路径。 使用以下行创建名为 test.tcl 的 TCL 文件。

puts $tcl_pkgPath
puts $auto_path

在 LINUX 提示符下键入以下命令以 运行 代码并记下输出

tclsh test.tcl

在我的例子中,输出是

/usr/lib64/tcl8.6

我发现我的 treectrl2.4.1 目录在 /usr/lib 中,所以在 LINUX 提示符下,我输入了以下命令:

cd /usr/lib
cp -R treectrl2.4.1 /usr/lib64/tcl8.6/

这解决了我的问题。