如何解决Windows中的TkTreeCtrl错误?

0 投票
2 回答
1809 浏览
提问于 2025-04-18 09:20

我安装了tktreectrl这个库,并且成功导入了它。但是,在运行下面的程序时,我还是遇到了错误。有人能帮帮我吗?

这是我的代码...

from Tkinter import *
import sqlite3
import TkTreectrl as treectrl

root = Tk()
con = sqlite3.connect('Main.db')
cur = con.cursor()

cur.execute("SELECT * FROM Lucky")

mlb = treectrl.MultiListbox(root)
mlb.pack(side='top', fill='both', expand=1)
Button(root, text='Close', command=root.quit).pack(side='top', pady=5)

mlb.focus_set()   
mlb.configure(selectcmd=select_cmd, selectmode='extended')
mlb.config(columns=('Column 1', 'Column 2'))

for row in cur.fetchall():
    mlb.insert('end',*map(unicode,row))


root.mainloop()

这是我遇到的错误:

Traceback (most recent call last):
  File "C:\Documents and Settings\Owner\Desktop\Python Work\Cx_Freeze\Multi_litbox.py", line 11, in <module>
    mlb = treectrl.MultiListbox(root)
  File "C:\Python27\lib\site-packages\TkTreectrl\MultiListbox.py", line 50, in __init__
    Treectrl.__init__(self, master, showroot=showroot, **kw)
  File "C:\Python27\lib\site-packages\TkTreectrl\Treectrl.py", line 489, in __init__
    ver = master.tk.call('package', 'require', 'treectrl')
TclError: can't find package treectrl

有人能帮我解决这个问题吗?我需要在我的代码中使用多个列表框。

2 个回答

0

从下面的链接下载适合你系统的64位或x86位的tktreectrl:

https://sourceforge.net/projects/tktreectrl/files/tktreectrl/tktreectrl-2.4.1/

把下载的文件放到tcl文件夹里(比如你在出现这个错误的conda目录下)——

C:\Users\<username>\AppData\Local\Continuum\miniconda3\tcl\

这样你就可以解决两种错误:

找不到包的错误

无效参数的错误

2

你说你安装了tktreectrl。既然你在用Python的Tkinter,而不是普通的tcl,你还需要安装tkintertreectrl。

你有没有按照Michael在主页上提到的那样安装这两个包呢?

确保在安装这两个包的时候,先安装tktreectrl。安装TkinterTreectrl或者创建TkinterTreectrl小部件时,试着先简单地导入或者创建一个没有任何数据的TkinterTreectrl小部件。

我觉得可能是tktreectrl没有安装好。

编辑:从错误信息来看,确实是tktreectrl没有安装。TkTreectrl需要'treectrl'这个包,但你系统上目前没有。你可以在大多数Debian系统上找到这个包,或者直接从他们的sourceforge页面下载。

另外,建议你看看Michael关于使用TkTreectrl的说明

File "C:\Python27\lib\site-packages\TkTreectrl\Treectrl.py", line 489, in __init__
ver = master.tk.call('package', 'require', 'treectrl')

TclError: 找不到包treectrl

撰写回答