Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取python/kivy上小部件的当前id_Python_Kivy_Python 2.x - Fatal编程技术网

获取python/kivy上小部件的当前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?还是我点击的那个?我有一个可悬停的类,所以当它进入一个小部件时,它会进行检测,但我真的不知道如何获取它的位置,或者更改它的源。 是否

我在kivy上制作了一种android锁,为了划清界限,我需要获得鼠标所在的小部件的id,所以我在.kv文件中为每个小部件分配一个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?所以我可以在应用程序中将其转换为变量并使用它