2016-06-14 1 views
1

У меня есть Python 2.7 программы/Tkinter, которая использует TkinterDnD2 и TkDnD (не входит в стандартный дистрибутив Python), чтобы обеспечить файл перетащить-и- падение в среде Win7/Win10. Я использовал PyInstaller, чтобы создать однофайльный исполняемый файл для удобства распространения в нашей организации. Я не коснулся его в течение нескольких лет, но он нуждается в обслуживании. К сожалению, текущая версия PyInstaller (3.2) не создает рабочий исполняемый файл с этими модулями Tk *. (У меня есть собственный тайный hook-_tkinter.py, который заставлял его работать с более старой версией PyInstaller, но не смог его поместить в 3.2.)Перспективная GUI Python + файл перетащить и падение + исполняемый

Я мог бы попробовать заменить PyInstaller; Я мог бы попробовать другой инструментарий GUI. Я хотел бы решение, которое будет работать на Python 3. Мне нужна возможность перетаскивания файлов. Неясно, поддерживаются ли TkinterDnD2 и TkDnD.

Что было бы жизнеспособной комбинацией пакетов для создания графического интерфейса Python 3 с перетаскиванием файла и распространения в виде «портативного» исполняемого файла?

Python 3 + [tkinter|wxwidgets|pyside|??] + [pyinstaller|cx_freeze|py2exe|??]

+0

Вы пробовали py2exe? Существует много возможностей для настройки упаковки базы кода и внешних файлов. – Dan

+0

@ Dan Я еще не пробовал py2exe. Тем не менее, мой успех/неудача PyInstaller сильно зависел от того, какие модули Python я использовал, поэтому, поскольку существует большое количество комбинаций GUI + packagers, я надеялся извлечь выгоду из некоторой коллективной мудрости, чтобы сузить выбор. – notsofast

+0

Взгляните на py2exe и посмотрите на вариант include: http://www.py2exe.org/index.cgi/ListOfOptions – Dan

ответ

0

Я успешно мигрировали мое приложение Python 3.4/PySide 1.2.4/Qt 4.8.7 работает в Windows 10, и я могу успешно упаковать его в одном файле EXE-файл с PyInstaller 3.2.

Упаковка намного проще, чем у Python 2.7 и Tkinter/TkinterDnD2/TkDnD. Не нужны никакие пользовательские крючки:

pyi-makespec --windowed --onefile --noupx --icon=appicon.ico app.py 
pyinstaller --clean app.spec 

Это производит App.exe. Я использую флаг --clean, чтобы каждый раз удалять кеш-накопитель, чтобы избежать каких-либо проблем.

Я также очень доволен Qt/PySide. Он имеет надежную поддержку drag-and-drop (что было моим требованием сверху), зрелым набором виджетов и хорошей документацией.

Я также посмотрел на других кандидатов инструментальных средств GUI, Tkinter и wxwidgets. Tkinter в Python 3 по-прежнему не поддерживает перетаскивание файлов изначально, и он не выглядел так, как активно поддерживалась TkinterDnD/TkDnD. Очевидно, что Wxwidgets не поддерживает перетаскивание файлов.

Смежные вопросы