我有一个Python 2.7 / Tkinter程序,它使用 TkinterDnD2 和 TkDnD (不是标准Python发行版的一部分)来在Win7中提供文件拖放/ Win10环境。我一直在使用 PyInstaller 来创建单文件可执行文件,以便在我们的组织内进行分发。我好几年都没碰过它,但它需要维护。不幸的是,PyInstaller(3.2)的当前版本不会生成这些Tk *模块的可运行可执行文件。 (我有一个自定义的奥术hook-_tkinter.py
,它可以使用旧版本的PyInstaller,但无法将其移植到3.2。)
我可以尝试替换PyInstaller;我可以尝试不同的GUI工具包。我想要一个可以在Python 3中运行的解决方案。我需要文件拖放功能。目前尚不清楚TkinterDnD2和TkDnD是否再受支持。
使用文件拖放构建Python 3 GUI并将其作为便携式"进行分发的可行组合是什么?可执行?
Python 3 + [tkinter|wxwidgets|pyside|??] + [pyinstaller|cx_freeze|py2exe|??]
答案 0 :(得分:0)
我已成功将我的应用程序迁移到在Windows 10中运行的 Python 3.4 / PySide 1.2.4 / Qt 4.8.7 ,我可以使用 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
标志清除pyinstaller缓存以避免任何问题。
我对Qt / PySide也非常满意。它支持拖放(这是我从上面的要求),一套成熟的小部件和良好的文档。
我还看了其他GUI工具包候选人,Tkinter和wxwidgets。 Python 3中的Tkinter仍然不支持本机文件拖放,并且它看起来不像TkinterDnD / TkDnD被主动支持。 Wxwidgets似乎也不支持文件拖放。