2017-05-26 100 views

回答

2

你可以参考使用kivy ID系统的其他部件。注意下面的代码:

from kivy.base import runTouchApp 
from kivy.lang import Builder 

runTouchApp(Builder.load_string(""" 
<[email protected]>: 

<[email protected]>: 
    on_state: self.background_color = 0,0,0,1 # the sub-toggle button changes color 

BoxLayout: 
    MainToggle: 
     id: my_toggle1 # an id allows us to refer to this widget 
     text: "Main Toggle" 
     # change the other toggle's state using its id 
     on_state: my_toggle2.state = "down" if my_toggle2.state == "normal" else "normal" 
    SubToggle: 
     id: my_toggle2 
     text: "Sub Toggle" 
      """)) 

这里是一个极好的video教程,使用kivy ID系统中的实际例子。如果您无法绕过这个问题,请回复。

+0

太棒了!这工作,感谢您的帮助。我遇到的另一个问题是当我尝试使用“MainToggle”来改变多个“SubToggle”按钮的状态,而不是一个。我试图通过给予所有SubToggle按钮相同的ID来实现这一点,但MainToggle只能一次影响一个SubToggle。对此有何想法?再次感谢。 – blakebullwinkel

+0

嗯,你试图在这里做一些棘手的事情,你确定你选择了正确的方法来做到这一点?无论如何,如果有许多SubToggle按钮,并且您想以相同方式更改它们,为什么不给BoxLayout一个id,并且在您从Python代码中插入SubToggles时,将它们添加到ListProperty中。然后,你可以遍历该列表并执行sub_list中的sub:change_state(x)'或类似的东西。考虑接受我的原始答案,如果它帮助你。 –

+0

刚接受:)是啊,我想要做的是有一个菜单下的项目列表。我希望能够单独点击项目按钮,并且还可以单击菜单按钮,以便将它下面的所有项目按钮的状态更改为“向下”位置。我一直使用kivy语言插入所有的切换按钮,但似乎我需要在Python端创建一个循环。 – blakebullwinkel