【问题标题】:TkDnd working in Spyder but gives error after converting .exeTkDnd 在 Spyder 中工作,但在转换 .exe 后出错
【发布时间】: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


    【解决方案1】:

    这篇文章已经有几年的历史了,但是当我寻找我的问题时,我得到了它。最后我是这样解决的:

    pyinstaller --onefile --add-data=C:\ProgramData\Anaconda3\tcl\tkdnd2.8\;' myfile.py 
    

    【讨论】:

      【解决方案2】:

      我通过在使用 pyinstaller 生成可执行文件时使用 --add-data 属性从 tkdnd2.8 文件夹添加文件解决了这个问题。我可以使用 onefile 创建它。

      【讨论】:

        猜你喜欢
        • 2021-11-19
        • 1970-01-01
        • 2020-05-14
        • 2017-01-24
        • 2020-07-31
        • 1970-01-01
        • 2019-05-22
        • 2020-12-19
        • 2020-07-11
        相关资源
        最近更新 更多