获取python/kivy上小部件的当前id
我在kivy上制作了一种android锁,为了划清界限,我需要获得鼠标所在的小部件的id,所以我在.kv文件中为每个小部件分配一个id,如下所示:获取python/kivy上小部件的当前id,python,kivy,python-2.x,Python,Kivy,Python 2.x,我在kivy上制作了一种android锁,为了划清界限,我需要获得鼠标所在的小部件的id,所以我在.kv文件中为每个小部件分配一个id,如下所示: ClickableImage: id: one source: 'button.png' etc. 我知道我可以用 self.parent.ids.id 或 但是有没有办法获得鼠标所在的ID?还是我点击的那个?我有一个可悬停的类,所以当它进入一个小部件时,它会进行检测,但我真的不知道如何获取它的位置,或者更改它的源。 是否
ClickableImage:
id: one
source: 'button.png'
etc.
我知道我可以用
self.parent.ids.id
或
但是有没有办法获得鼠标所在的ID?还是我点击的那个?我有一个可悬停的类,所以当它进入一个小部件时,它会进行检测,但我真的不知道如何获取它的位置,或者更改它的源。
是否有:
self.parten.ids.current
或者类似的?
感谢您的帮助您可以使用或,并在小部件中设置一个方法,将父项
中的变量更改为当前小部件的如下所示:
if self.collide_point(*Window.mouse_pos):
self.parent.selected_widget = self # or its id
那你可以用它做任何事。也许将您的逻辑放入小部件本身并直接在那里处理冲突会更好。显然,您需要将使用上面的if
块创建的方法绑定到一个事件,例如发布时的或按下时的,因此运行该方法,否则它将不起作用
您还可以从PR甚至代码片段中获得可悬停的行为
编辑:
请注意,该id在小部件实例中不可用
这意味着self.ids.my_id.id==None
,因此要实际获取id
,您需要执行以下操作:
def find(self, parent, widget):
for id, obj in parent.ids.items():
if obj == widget:
print id
return id
您可以在小部件中使用或并设置一个方法,该方法将父部件中的变量更改为当前小部件的变量,如下所示:
if self.collide_point(*Window.mouse_pos):
self.parent.selected_widget = self # or its id
那你可以用它做任何事。也许将您的逻辑放入小部件本身并直接在那里处理冲突会更好。显然,您需要将使用上面的if
块创建的方法绑定到一个事件,例如发布时的或按下时的,因此运行该方法,否则它将不起作用
您还可以从PR甚至代码片段中获得可悬停的行为
编辑:
请注意,该id在小部件实例中不可用
这意味着self.ids.my_id.id==None
,因此要实际获取id
,您需要执行以下操作:
def find(self, parent, widget):
for id, obj in parent.ids.items():
if obj == widget:
print id
return id
谢谢我明白这个想法,但我记得有一种方法可以从主类(App)中获取变量,我在那里声明了它,然后有一个类似“.get_running_App”之类的方法。。(我也找不到,我想文档不是很清楚)。你知道我在说什么吗?self.app=app.get\u running\u app()
最有可能是在\u init\u\u
方法中,然后你基本上可以通过self.app从app
类中获得任何东西。
我只需要得到当前id的id,鼠标就在上面,因为当我打印self或self.id时,我只能得到,或者没有,我如何才能得到我当前使用的小部件的id?所以我可以把它转移到应用程序中的一个变量,然后使用iThanks!我明白这个想法,但我记得有一种方法可以从主类(App)中获取变量,我在那里声明了它,然后有一个类似“.get_running_App”之类的方法。。(我也找不到,我想文档不是很清楚)。你知道我在说什么吗?self.app=app.get\u running\u app()
最有可能是在\u init\u\u
方法中,然后你基本上可以通过self.app从app
类中获得任何东西。
我只需要得到当前id的id,鼠标就在上面,因为当我打印self或self.id时,我只能得到,或者没有,我如何才能得到我当前使用的小部件的id?所以我可以在应用程序中将其转换为变量并使用它