【发布时间】:2019-03-07 13:37:45
【问题描述】:
我按照此处的说明安装了 TkDnD:How to Install and Use TkDnD with Python 2.7 Tkinter on OSX?
主要是我遵循了这个建议:
在 Windows 上:
1) 将tkdnd2.8目录复制到C:\Python27\tcl
2) 将TkinterDnD2目录复制到C:\Python27\Lib\site-packages
我正在使用 anaconda,所以我将它复制到我的环境目录 (C:\ProgramData\Anaconda3\envs\gui)
然而当我尝试运行这段代码时:
import sys
if sys.version_info[0] == 2:
from Tkinter import *
else:
from tkinter import *
from TkinterDnD2 import *
def drop(event):
entry_sv.set(event.data)
root = TkinterDnD.Tk()
entry_sv = StringVar()
entry_sv.set('Drop Here...')
entry = Entry(root, textvar=entry_sv, width=80)
entry.pack(fill=X, padx=10, pady=10)
entry.drop_target_register(DND_FILES)
entry.dnd_bind('<<Drop>>', drop)
root.mainloop()
我收到此错误
Exception has occurred: RuntimeError
Unable to load tkdnd library.
File "drag_and_drop_GUI.py", line 10, in <module>
root = TkinterDnD.Tk()
认为这是 anaconda 的问题,我也在我的系统 Python 中安装了 TkDnD(没有虚拟环境),但问题仍然存在。 有什么想法吗?
【问题讨论】:
-
您确定在您的 anaconda python 安装中安装了该库吗?我以为 Anaconda 解释器和基本解释器是分开的?
-
我很确定,我在这些目录中安装了这两个元素: C:\ProgramData\Anaconda3\envs\gui\tcl\tkdnd2.8 C:\ProgramData\Anaconda3\envs\gui\Lib\ site-packages\TkinterDnD2 我刚刚调用了我的 env gui。它们是分开的,但我只是安装了与 anaconda 分开的 Python,以检查 conda 是否是问题所在。
-
等一下,你正在从 TkinterDnD2 导入,如果你只实例化 Tk() 而不是 TkinterDnD2.Tk() 会发生什么?
-
我在后面的行 entry.drop_target_register(DND_FILES) 出现了一个不同的错误:_tkinter.TclError 无效的命令名称“tkdnd::drop_target”文件“drag_and_drop_GUI.py”,第 16 行,在
entry.drop_target_register(DND_FILES)
标签: python tkinter drag-and-drop