gpt4 book ai didi

python - 通过Python在Kivy中设置动态Id

转载 作者:太空宇宙 更新时间:2023-11-03 18:02:30 24 4
gpt4 key购买 nike

嘿伙计们,

我正在尝试为小部件设置动态 ID。我这样做的原因是我可以使用 ID 找到这些小部件。不幸的是,当我尝试这样做时,我不断收到KeyError。我这样做的原因是,我可以在拖动当前窗口小部件时创建一个新窗口小部件,但其上有一个动态迭代 id,因此很容易跟踪。

Python代码如下:

iterations = 0


def widget_iterations():
global iterations
iterations += 1
return iterations

class AddBlock(Widget):
id = "add" + str(widget_iterations())

def find_my_id(self):
return self.id

Kivy语言代码如下:

<AddBlock>:
size_hint_y: None
size: 110, 50
pos: self.pos
BoxLayout:
id: root.find_my_id()

我还尝试使用 self.find_my_id()self.idroot.id,但一直失败。

最后,我不知道如何解决这个问题。

任何帮助将不胜感激。

最佳答案

你不能像这样动态设置id,它不是一个属性,而是一个特殊的 token 。不过,您可能实际上并不需要这样做,如果您提供一个示例来说明为什么您认为有必要,那么也许我们可以建议更好的方法。

编辑:对于评论来说太长了:

kv 中 id 的要点是规则的根小部件获取它们的列表,通过该列表来访问规则的各个小部件。如果您在 kv 中定义一个小部件,那么它在重要意义上不能是动态的(因为 kv 规则只是不会更改的初始定义),因此您不需要动态 id。如果您稍后要修改子项,那么您根本不需要弄乱 id,因为您必须已经引用了小部件,因为您专门实例化并添加了它们。您可以通过其他方式存储该引用以访问它(如果您愿意,您也可以手动修改 ids 字典,但不是必须这样做)。

如果不清楚,您能否发布一个最小的工作示例,说明您正在尝试执行的操作以及您认为应该执行的操作,然后我可以通过使用它来进行解释?

关于python - 通过Python在Kivy中设置动态Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27464316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com