我正在创建一个分类文件并将其合并的应用程序。当我将文件从文件浏览器删除到小部件的列表框时,我需要文件播放。对于Tkinter,我安装了TKDND。我按照如何在OSX上使用Python 2.7 TKINTER安装和使用TKDND的说明?它对我有用。我正在使用Anaconda,并且在C: Users Anaconda3 tcl和C: Users Anaconda3 lib lib lib lib lib lib lib lib lib lib lib lib lib lib lib lib a anaconda3 tcl和c中的文件夹。我正在使用Spyder和Python 3.7。我从下面的命令中执行可执行文件:
pyinstaller --onefile -w PDF_Merger.py
打开文件后,它给了我错误:
致命错误" .py无法执行"
我知道这个问题是关于链接tkdnd。
我尝试使用-Onedir使其可执行,但仍然给我带来了错误。但是将tkdnd2.8复制到区分后。
这是我使用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文件给了我错误。谁能告诉我如何解决此问题,或者如果我在代码中犯了一些错误?
我在使用pyinstaller生成可执行文件的同时,将来自tkdnd2.8文件夹中的文件添加到tkdnd2.8文件夹中解决了此问题。我能够用Onefile创建它。
这篇文章已经有几年了,但是当我寻找问题时,我就知道了。最后,我这样解决了:
pyinstaller --onefile --add-data=C:ProgramDataAnaconda3tcltkdnd2.8;' myfile.py