Существует пример того, как привязывать и откреплять файлы, перетаскивая их из системы в приложение Kivy.
(Возможно, это можно сделать лучше, но сейчас важно, чтобы это работало)
Есть 2 кнопки, левая (грубо говоря) позволяет сбрасывать файлы, а правая - отключает эту функцию.
from kivy.core.window import Window
from kivy.lang import Builder
KV = '''
BoxLayout:
Button:
text: 'bind dropfile'
on_press: app.bind_dropfile()
Button:
text: 'unbind dropfile'
on_press: app.unbind_dropfile()
'''
class DropFileApp(App):
def build(self):
self.root = Builder.load_string(KV)
def manage_dropfile(self, window, fn):
print('do something')
def bind_dropfile(self):
Window.bind(on_dropfile=self.manage_dropfile)
print ('bound!')
def unbind_dropfile(self):
Window.unbind(on_dropfile=self.manage_dropfile)
print ('unbound!')
if __name__ == '__main__':
DropFileApp().run()
Есть еще один подобный пример.
Приложение также имеет две кнопки.
Я ожидаю, что при нажатии на левую кнопку мышь станет ограниченной областью окна приложения (не сможет выйти из нее), а когда я нажму на правую кнопку, эта функция будет отключена.
Но работает только левая кнопка.
from kivy.app import App
from kivy.core.window import Window
from kivy.lang import Builder
KV = '''
BoxLayout:
Button:
text: 'bind grab_mouse'
on_press: app.bind_grab_mouse()
Button:
text: 'unbind grab_mouse'
on_press: app.unbind_grab_mouse()
'''
class DropFileApp(App):
def build(self):
self.root = Builder.load_string(KV)
def manage_grab_mouse(self, instance):
print('do something')
Window.grab_mouse()
def bind_grab_mouse(self):
Window.bind(on_cursor_leave=self.manage_grab_mouse)
print ('bound!')
def unbind_grab_mouse(self):
Window.unbind(on_cursor_leave=self.manage_grab_mouse)
print ('unbound!')
if __name__ == '__main__':
DropFileApp().run()
В чем может быть проблема?