这里有一个关于如何绑定和解除绑定文件的示例;从系统中放入Kivy应用程序。 (也许这可以做得更好,但现在重要的是它能起作用)
有两个按钮,左一个(粗略地说)启用文件放置,右一个-关闭此功能
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()
有什么问题吗
您正在停用on_cursor_leave事件与manage_grab_鼠标功能之间的连接,但未禁用grab_鼠标功能。您需要做的是在bind_grab_mouse()函数中调用grab_mouse(),在ungrab_mouse()函数中调用ungrab_mouse(),不需要创建函数manage_grab_mouse
相关问题 更多 >
编程相关推荐