tkinter inter-windows 拖放支持

tkinter inter-windows drag and drop support

我正试图帮助 tkdnd 的所有者生成一个 wheel 并将其分发到 Pypi,这样用户就可以使用简单的 pip install TkinterDnD2.

安装 tkdnd 扩展

我这两天一直在找这个'challange',但到目前为止还不能自己解决,但我相信对python打包和安装过程有深刻理解的人可以帮忙在短时间内解决。

目前,为了获得此扩展功能,您需要执行以下步骤 (as mentioned here):

  1. download the compiled tkdnd files 你的 os。现在转到您的 base interpreter directory/tcl 并将此文件夹复制到下面。例如:
--<python3.9-directory>
  --tcl
    --tkdnd2.9.2
    ...
  ...

注意 - 如果我在导入的 TkinterDnD2

项目的 venv 中创建匹配的 tcl/tkdnd2.9.2 目录,它对我不起作用
  1. 现在 download the python wrapper 并将其添加到您的 venv 站点包目录(或基本解释器,这无关紧要)。 所以将导入 TkinterDnD2 的 python 项目将如下所示:
--<python-test-project>
  --venv
    --Lib
      --site-packages
        --TkinterDnD2
        ...
  ...

现在可以成功 运行 tkdnd 扩展。

您可能会说这与安装普通的 python 库不太一样。 这里的问题是额外的 tkdnd2.9.2 文件夹需要位于基本解释器的 tcl 文件夹中。

也许 pos可以使用 setup.py 中的 package_datadata_files 告诉 python 在从车轮安装,但我不确定。见 Packaging and distributing projects 供完整参考。

不完整setup.py:

import setuptools

with open("README.md", "r", encoding="utf-8") as fh:
    long_description = fh.read()

setuptools.setup(
    name="TkinterDnD2",
    version="2.9.2",
    author="petasis",
    description="TkDND is an extension that adds native drag & drop capabilities to the Tk toolkit.",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/petasis/tkdnd",
    project_urls={
        "Bug Tracker": "https://github.com/petasis/tkdnd/issues",
    },
    classifiers=[
        "Programming Language :: Python :: 2",
        "Programming Language :: Python :: 3",
        "Operating System :: OS Independent",
    ],
    packages=setuptools.find_packages(),
    python_requires=">=2, >=3",
    # some extra logic probably belong here
    # ...     
)

您可以跟踪问题 here,其中包括一些额外的讨论。

非常有用的 Whosebug 问题:

  1. How to Install and Use TkDnD with Python Tkinter on OSX?

非常有帮助的指南:

  1. Packaging and distributing projects
  2. Packaging Python Projects
  3. Python Bindings: Calling C or C++ From Python

任何帮助将不胜感激!

只是回答其他人像我一样被困了数周的情况。

您可以在此处查看 pmgagne 创建的 dist 存储库: https://github.com/pmgagne/tkinterdnd2

该包尚未在pypi上发布,但您可以按照我在这个问题上打开的说明构建一个轮子并安装它:https://github.com/pmgagne/tkinterdnd2/issues/5

希望作者能尽快构建并发布它,这样您就可以简单地执行 python -m pip install tkinterdnd2 并享受 tkinter 间 windows 拖放支持!

如果您不想自己构建它,请下载轮子:tkinterdnd2-0.3.0-py2.py3-none-any.zip 解压缩 zip 然后你可以做 python -m pip install tkinterdnd2-0.3.0-py2.py3-none-any.whl 然后你就可以 import tkinterdnd2 在你的 python 项目中。

更新

作者没有回复所以我forked它自己发表了。 您现在可以简单地使用

安装
pip install tkinterdnd2

尽情享受吧!