将组名分配给kivy图形指令

时间:2016-09-13 11:00:12

标签: python kivy kivy-language

这看起来应该很简单,但我找不到办法。

为了遍历画布上的指令,我应该使用canvas.get_group()方法。为了做到这一点,我首先需要为我想要迭代的指令分配一个组名。如何做到这一点?

2 个答案:

答案 0 :(得分:1)

这是我能够找到的自己问题的答案。

所以,我发现(from here)指令(以及画布范围内的许多其他类)具有group属性,未在文档中列出,可在创建指令时设置:

在python中是这样的:

with self.canvas: (self must be a widget)
    Rectangle(pos=self.pos, size=self.size, group='my_group')

,就像在kv中一样:

<SomeWidget>:
    canvas:
        Rectangle:
            group:'my_group'

如果这样完成,稍后调用self.canvas.get_group('my_group')会返回一个包含其中说明的iterable。

然而,这有其自身的问题。检查我的next question

答案 1 :(得分:0)

使用InstructionGroup()。这是kivy文档的一个例子:

blue = InstructionGroup()
blue.add(Color(0, 0, 1, 0.2))
blue.add(Rectangle(pos=self.pos, size=(100, 100)))

green = InstructionGroup()
green.add(Color(0, 1, 0, 0.4))
green.add(Rectangle(pos=(100, 100), size=(100, 100)))

# Here, self should be a Widget or subclass
[self.canvas.add(group) for group in [blue, green]]