【发布时间】:2017-06-29 13:27:37
【问题描述】:
我正在尝试运行下面链接中发布的代码来处理 Kivy 应用程序中文件的拖放。 Kivy: drag n drop, get file path
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()
当我将文件拖入应用程序窗口时,它似乎没有触发“_on_file_drop”事件函数。让这项工作得到任何帮助都会很棒。我的整个控制台输出如下:
$ python main.py
[INFO ] [Logger ] Record log in C:\Users\\.kivy\logs\kivy_17-02-10_163.txt
[INFO ] [Kivy ] v1.9.1
[INFO ] [Python ] v3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)]
[INFO ] [Factory ] 179 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_gif, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO ] [OSC ] using <thread> for socket
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] GLEW initialization succeeded
[INFO ] [GL ] OpenGL version <b'4.4.0 - Build 20.19.15.4463'>
[INFO ] [GL ] OpenGL vendor <b'Intel'>
[INFO ] [GL ] OpenGL renderer <b'Intel(R) Iris(TM) Graphics 540'>
[INFO ] [GL ] OpenGL parsed version: 4, 4
[INFO ] [GL ] Shading version <b'4.40 - Build 20.19.15.4463'>
[INFO ] [GL ] Texture max size <16384>
[INFO ] [GL ] Texture max units <32>
[INFO ] [Shader ] fragment shader: <b"WARNING: 0:7: '' : #version directive missing">
[INFO ] [Shader ] vertex shader: <b"WARNING: 0:7: '' : #version directive missing">
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
[INFO ] [Base ] Start application main loop
[INFO ] [Base ] Leaving application in progress...
【问题讨论】:
-
那个精确的副本对我来说很好。也许您没有删除文件?您是否看到用于丢弃的图标,例如那个带加号的箭头?
-
是的,我看到图标发生了变化。 @KeyWeeUsr 您是否使用与我上面相同的版本?很明显,没有调用 dropfile 操作。看着here,我觉得奇怪的是只有 dropfile 枚举器索引有一个逗号,虽然我不知道这是否相关。
-
我用 py2 运行了 1.9.1,用 3.5.2 运行了 master,multi_dropfile.py 的两种情况都正常工作。这可能是您的代码的错误(如果它不是确切的示例),或者可能是安装损坏(尝试重新安装)。 Afaik,1.9.1 仅在 2.7 和 3.4 上得到官方支持,所以可能有问题。尝试安装nightly wheel。
-
我安装了夜间轮。现在收到错误
[CRITICAL] [Window ] Unable to find any valuable Window provider. sdl2 - ImportError: DLL load failed: The specified module could not be found.正在通过this 尝试解决。 -
好的!情节变厚了……我让它运行了。我一直使用 git bash 作为我的控制台,以管理员身份运行。我发现当我不以管理员身份运行时,dropfile 代码有效。当我以管理员身份运行时,它不会。你能尝试复制这个吗? - 同样的事情发生在 Windows 控制台中。