Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
面向未来的Python GUI+;文件拖放&x2B;可执行_Python_User Interface_Drag And Drop_Pyinstaller - Fatal编程技术网

面向未来的Python GUI+;文件拖放&x2B;可执行

面向未来的Python GUI+;文件拖放&x2B;可执行,python,user-interface,drag-and-drop,pyinstaller,Python,User Interface,Drag And Drop,Pyinstaller,我有一个Python2.7/Tkinter程序,它使用TkinterDnD2和TkDnD(不是标准Python发行版的一部分)在Win7/Win10环境中提供文件拖放。我一直在使用PyInstaller创建单个文件可执行文件,以便于在我们的组织内分发。我已经好几年没碰它了,但它需要保养。不幸的是,PyInstaller的当前版本(3.2)没有生成带有这些Tk*模块的可执行文件。(我有一个自定义的奥术hook-tkinter.py,它可以与较旧版本的PyInstaller一起工作,但无法将其移植到

我有一个Python2.7/Tkinter程序,它使用TkinterDnD2和TkDnD(不是标准Python发行版的一部分)在Win7/Win10环境中提供文件拖放。我一直在使用PyInstaller创建单个文件可执行文件,以便于在我们的组织内分发。我已经好几年没碰它了,但它需要保养。不幸的是,PyInstaller的当前版本(3.2)没有生成带有这些Tk*模块的可执行文件。(我有一个自定义的奥术
hook-tkinter.py
,它可以与较旧版本的PyInstaller一起工作,但无法将其移植到3.2。)

我可以尝试更换PyInstaller;我可以尝试不同的GUI工具包。我想要一个能在Python3中工作的解决方案。我需要文件拖放功能。目前尚不清楚TkinterDnD2和TkDnD是否还受支持

构建Python3GUI的一个可行的软件包组合是什么?它具有文件拖放功能,并作为“可移植的”可执行文件分发


python3+[tkinter | wxwidgets | pyside | |??]+[pyinstaller | cx | freeze | py2exe | | | py2exe | | | | | | | | | | | | | | | | | | | | | | |

与Python2.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。Python3中的Tkinter仍然不支持本地文件拖放,而且TkinterDnD/TkDnD看起来也不受积极支持。Wxwidgets似乎也不支持文件拖放。

我已成功地将我的应用程序迁移到运行在Windows 10中的Python 3.4/PySide 1.2.4/Qt 4.8.7,并且我可以使用PyInstaller 3.2将其成功打包到单个文件.exe中

与Python2.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。Python3中的Tkinter仍然不支持本地文件拖放,而且TkinterDnD/TkDnD看起来也不受积极支持。Wxwidgets似乎也不支持文件拖放。

您尝试过py2exe吗?要自定义打包代码库并包含外部文件,您可以做很多事情。@Dan我还没有尝试py2exe。然而,我的PyInstaller的成功/失败很大程度上取决于我使用的Python模块,因此,由于存在大量GUI+打包程序的组合,我希望从一些集体智慧中获益,以缩小选择范围。看看py2exe,特别是看看includes选项:您尝试过py2exe吗?要自定义打包代码库并包含外部文件,您可以做很多事情。@Dan我还没有尝试py2exe。然而,我的PyInstaller的成功/失败很大程度上取决于我使用的Python模块,因此,由于存在大量GUI+打包程序的组合,我希望从一些集体智慧中获益,以缩小选择范围。请看py2exe,特别是看includes选项: