2017-02-11 12 views
1

Я пытаюсь запустить код, размещенный по ссылке ниже, для обработки перетаскивания файлов в приложении Kivy. Kivy: drag n drop, get file pathKivy 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() 

Это не похоже, запуская «» _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... 
+0

Эта точная копия отлично работает для меня. Может быть, вы не отбрасываете файл? Вы видите значок для удаления, например. что стрелка со знаком плюса? – KeyWeeUsr

+0

Да, я вижу изменение значка. @KeyWeeUsr вы используете те же версии, что и я выше? Понятно, что действие dropfile не вызывается. Глядя на [здесь] (https://github.com/kivy/kivy/commit/ee43d7ebff09e654b5551c71d9840da6bf9cb9f4) Мне странно, что только индекс перечислителя переполнения имеет запятую, хотя я не знаю, является ли это актуальным. – KDumont

+0

Я побежал 1.9.1 с py2 и мастер с 3.5.2, оба случая [multi_dropfile.py] (https://raw.githubusercontent.com/kivy/kivy/master/examples/miscellaneous/multiple_dropfile.py) и что ответный пример работал правильно. Это либо ошибка вашего кода (если это не точный пример), либо это может быть поврежденная установка (попробуйте переустановить). Afaik, 1.9.1 официально поддерживается только на 2,7 и 3,4, поэтому может быть что-то не так. Попробуйте установить [ночное колесо] (https://kivy.org/docs/installation/installation-windows.html). – KeyWeeUsr

ответ

1

Это похоже на проблему с SDL2 при работе в качестве администратора. Поработает еще дальше, чтобы получить исправление, но эта проблема временно решена путем запуска с основными пользовательскими привилегиями (без администратора).