Kivy; 如何在 python 代码中 ID 一个 KV lang width?

问题描述 投票:0回答:1

当 Kivy 应用程序中发生窗口级事件(如鼠标点击或拖放)时,它会被传递到整个小组件树。 我有多个同一类的小组件分布在我的用户界面上,我需要知道事件发生在哪一个上面。 虽然我可以使用 self.collide()一旦我这样做了,我需要知道它是哪个小组件--即它是我的 UI 中最上面的小组件,还是最下面的,还是什么。

我本想通过给kv文件中的 "id "值取一个唯一的名字来实现这个目的,然后在我的代码中基于这个名字来运行案例。 但我很失望,因为 查出 "......请注意,ID 在小组件实例中是不可用的......"。

那么在kv lang文件中给每个widget一个唯一的ID,可以在代码中引用的最佳做法是什么? 当然我可以使用对象属性,但这似乎是矫枉过正。 有没有一些更简单的方法?

python events kivy kivy-language
1个回答
1
投票

只要给widget一个识别属性或属性。如果你想要一个字符串ID,使用StringProperty。我不太清楚这种应用结构是否是解决你问题的最好方法,但它会工作得很好。

© www.soinside.com 2019 - 2024. All rights reserved.