当 Kivy 应用程序中发生窗口级事件(如鼠标点击或拖放)时,它会被传递到整个小组件树。 我有多个同一类的小组件分布在我的用户界面上,我需要知道事件发生在哪一个上面。 虽然我可以使用 self.collide()
一旦我这样做了,我需要知道它是哪个小组件--即它是我的 UI 中最上面的小组件,还是最下面的,还是什么。
我本想通过给kv文件中的 "id "值取一个唯一的名字来实现这个目的,然后在我的代码中基于这个名字来运行案例。 但我很失望,因为 查出 "......请注意,ID 在小组件实例中是不可用的......"。
那么在kv lang文件中给每个widget一个唯一的ID,可以在代码中引用的最佳做法是什么? 当然我可以使用对象属性,但这似乎是矫枉过正。 有没有一些更简单的方法?
只要给widget一个识别属性或属性。如果你想要一个字符串ID,使用StringProperty。我不太清楚这种应用结构是否是解决你问题的最好方法,但它会工作得很好。