TkDnd работает в Spyder, но выдает ошибку после конвертации .exe - PullRequest
0 голосов
/ 06 июля 2019

Я создаю одно приложение, которое сортирует файлы и объединяет их по имени файла.Мне нужны были пути к файлам, когда я перетаскивал файлы из файлового браузера в список моего виджета.Для Tkinter я установил TkDnd.Я следовал инструкциям Как установить и использовать TkDnD с Python 2.7 Tkinter на 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 выдает мне ошибку.Может кто-нибудь показать мне, как решить эту проблему или если я сделал несколько ошибок в коде?

1 Ответ

0 голосов
/ 06 июля 2019

Я решил эту проблему, добавив файлы из папки tkdnd2.8 с атрибутом --add-data при создании исполняемого файла с помощью pyinstaller.Я смог создать его с помощью одного файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...