【问题标题】:Assign group name to kivy graphic instruction将组名分配给 kivy 图形指令
【发布时间】:2016-09-13 11:00:12
【问题描述】:

这看起来应该很简单,但我没有找到方法。

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

【问题讨论】:

    标签: python kivy kivy-language


    【解决方案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') 的调用会返回一个包含指令的可迭代对象。

    但是,这有其自身的问题。检查我的next question

    【讨论】:

      【解决方案2】:

      使用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]]
      

      【讨论】:

      • 我试过这个。但是使用分配的组变量名称调用get_group()(例如canvas.get_group('green'))不会在结果迭代中产生任何指令,即返回一个空列表。我正在寻找一种分配组名的方法,以便在get_group() 调用中使用它。
      猜你喜欢
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      • 1970-01-01
      • 1970-01-01
      • 2019-05-18
      • 2021-11-29
      相关资源
      最近更新 更多