【问题标题】:Future-proof Python GUI + file drag-and-drop + executable面向未来的 Python GUI + 文件拖放 + 可执行文件
【发布时间】:2016-10-15 07:05:40
【问题描述】:

我有一个 Python 2.7/Tkinter 程序,它使用 TkinterDnD2TkDnD(不是标准 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|??]

【问题讨论】:

  • 你试过py2exe吗?您可以做很多事情来自定义打包您的代码库并包含外部文件。
  • @Dan 我还没有尝试过 py2exe。然而,我的 PyInstaller 成功/失败很大程度上取决于我使用的是哪些 Python 模块,因此,由于 GUI + 打包程序的组合非常多,我希望从一些集体智慧中受益,以缩小选择范围。跨度>
  • 看一下py2exe,具体看一下include选项:py2exe.org/index.cgi/ListOfOptions

标签: python user-interface drag-and-drop pyinstaller


【解决方案1】:

我已成功将我的应用程序迁移到在 Windows 10 中运行的 Python 3.4/PySide 1.2.4/Qt 4.8.7,并且我可以成功地将其打包成一个单文件 .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标志清除pyinstaller缓存以避免任何问题。

我对 Qt/PySide 也很满意。它对拖放(这是我上面的要求)、一组成熟的小部件和良好的文档提供了坚实的支持。

我还查看了其他 GUI 工具包候选者,Tkinter 和 wxwidgets。 Python 3 中的 Tkinter 本身仍然不支持文件拖放,而且看起来 TkinterDnD/TkDnD 并没有得到积极支持。 Wxwidgets 似乎也不支持文件拖放。

【讨论】:

    猜你喜欢
    • 2020-12-07
    • 1970-01-01
    • 2015-03-25
    • 2023-02-21
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多