【问题标题】:Kivy on_dropfile Not Being CalledKivy on_dropfile 未被调用
【发布时间】: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 控制台中。

标签: python kivy sdl-2


【解决方案1】:

这似乎是 SDL2 在以管理员身份运行时的问题。将进一步挖掘修复,但此问题暂时通过使用基本用户权限运行来解决(无管理员)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 2016-05-21
    • 2012-02-15
    相关资源
    最近更新 更多