Kivy:拖放,获取文件路径

16
在Kivy中,我正在尝试构建一个界面,让用户可以将文件拖放到一个小部件(文本输入框)中,然后我的代码将检索该文件的文件系统路径(/path/to/users.file)。这似乎比使用FileChooser小部件更简单,但我应该如何实现呢?
谢谢!

10
kivy.core.window 中有一个 on_dropfile 事件,当文件被拖到应用程序中时会触发该事件。以下是事件处理程序 https://kivy.org/docs/api-kivy.core.window.html?highlight=window#kivy.core.window.WindowBase.on_dropfile - hchandad
1个回答

21

使用on_dropfile事件处理程序。这里是一个工作示例:

from kivy.app import App
from kivy.core.window import Window


class WindowFileDropExampleApp(App):
    def build(self):
        Window.bind(on_dropfile=self._on_file_drop)
        return

    def _on_file_drop(self, window, file_path):
        print(file_path)
        return

if __name__ == '__main__':
    WindowFileDropExampleApp().run()

我在命令行上使用sudo尝试了这段代码。sudo kivy dnd.py。 但它在我的Mac上无法运行。(提供者:sdl2 / Kivy:v1.9.0,/ python:v2.7.10 / OS x Sierra) - Jinbom Heo
在Windows 10上按预期工作 - Jean-Pierre Schnyder
1
有没有办法将文件从Kivy拖出到另一个应用程序中?例如,您可以从PyCharm拖动文件。 - Avi Shah
@AviShah 我不认为能够拖出Kivy。这里有一个GitHub问题跟踪该功能:https://github.com/kivy/kivy/issues/3557 - mihow
1
在2.1.0中弃用,改用on_drop_file事件。on_dropfile事件将在接下来的两个版本中被移除... - Kivy 2.1.0。事件回调也已更改。 - demberto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接