【发布时间】:2019-11-16 15:28:42
【问题描述】:
我正在创建一个对文件进行排序并基于文件名合并它们的应用程序。当我将文件从文件浏览器拖放到小部件的列表框时,我需要文件路径。对于 Tkinter,我安装了 TkDnd。我遵循了How to Install and Use TkDnD with Python 2.7 Tkinter on OSX? 的指示,它对我有用。我正在使用 Anaconda,我在 C:\Users\Anaconda3\tcl 和 C:\Users\Anaconda3\Lib\site-packages 中调整文件夹。我正在使用 Spyder 和 python 3.7。我从下面的命令中生成了可执行文件:
pyinstaller --onefile -w PDF_Merger.py
打开文件后出现错误:
致命错误“.py 执行失败”
我知道这个问题与链接 TkDnd 有关。
我曾尝试使用 --onedir 制作可执行文件,但它仍然给我错误。但是在将 tkdnd2.8 复制到 dist 之后就可以了。
这是我使用 TkDnd 的代码:
from TkinterDnD2 import *
widget = TkinterDnD.Tk()
filesinfileslist = Variable(widget)
FilesShow = ReorderableListbox(widget, font=('aerial',12), height = 23 , width = 45, listvariable = filesinfileslist, selectmode = EXTENDED)
FilesShow.place(x=10, y=40)
FilesShow.drop_target_register(DND_FILES)
FilesShow.dnd_bind('<<Drop>>', drop)
drop 方法只接受 pdf 文件并将其设置为 listBox。
到目前为止,它可以在 spyder 中运行,但是 .exe 文件给了我错误。谁能告诉我如何解决这个问题,或者我是否在代码中犯了一些错误?
【问题讨论】:
标签: python-3.x tkinter drag-and-drop