Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Kivy:使用切换按钮更改另一个切换按钮的状态_Python_Kivy_Kivy Language - Fatal编程技术网

Python Kivy:使用切换按钮更改另一个切换按钮的状态

Python Kivy:使用切换按钮更改另一个切换按钮的状态,python,kivy,kivy-language,Python,Kivy,Kivy Language,例如,在Kivy语言中: <MainToggle@ToggleButton>: on_state: # something that will change the state of the sub-toggle <SubToggle@ToggleButton>: on_state: self.background_color = 0,0,0,1 # the sub-toggle button changes color : on#state:#将更

例如,在Kivy语言中:

<MainToggle@ToggleButton>:
    on_state: # something that will change the state of the sub-toggle

<SubToggle@ToggleButton>:
    on_state: self.background_color = 0,0,0,1 # the sub-toggle button changes color 
:
on#state:#将更改子切换状态的内容
:
on_状态:self.background_color=0,0,0,1#子切换按钮更改颜色

您可以使用kivy id系统参考其他小部件。遵守以下代码:

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

runTouchApp(Builder.load_string("""
<MainToggle@ToggleButton>:

<SubToggle@ToggleButton>:
    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"
            """))
从kivy.base导入runTouchApp
从kivy.lang导入生成器
runTouchApp(Builder.load_字符串(“”)
:
:
on_状态:self.background_color=0,0,0,1#子切换按钮更改颜色
盒子布局:
主开关:
id:my_toggle1#id允许我们引用此小部件
文本:“主切换”
#使用其他切换的id更改其状态
on_state:my_toggle2.state=“down”如果my_toggle2.state==“正常”或“正常”
小计:
id:my_开关2
文本:“子切换”
"""))

这里有一个极好的教程,在一个实际例子中使用了kivy id系统。如果您在这方面遇到困难,请回复。

太好了!这成功了,谢谢你的帮助。不过,我遇到的另一个问题是,当我尝试使用“MainToggle”来更改多个“SubToggle”按钮(而不仅仅是一个)的状态时。我试图通过为所有子旋转按钮提供相同的id来实现这一点,但是主切换似乎一次只影响一个子旋转。有什么想法吗?再次感谢。嗯,你在尝试做一些棘手的事情。看起来,你确定你选择了正确的方法吗?无论如何,如果有许多子聚合按钮,并且您希望以相同的方式更改它们,那么为什么不给BoxLayout一个id,并在插入Python代码中的子聚合时,将它们添加到ListProperty中呢。然后您可以循环浏览该列表,并在sub_列表中对sub执行
:更改状态(x)
或类似操作。如果你对我有帮助的话,请考虑接受我原来的答案。我希望能够单独单击项目按钮,也可以单击菜单按钮,以便将其下方所有项目按钮的状态更改为“向下”位置。我一直在使用kivy语言插入我所有的切换按钮,但看起来我确实需要在Python端进行某种循环。如果没有太多的子切换,只是考虑给每个人一个分离的ID,然后让MutoGutle改变每个子切换的状态,这就像一个有效的解决方案一样,我提出了一个列表属性。列表一只是稍微干净了一点,如果将来添加另一个子网格,您将不必做任何事情。如果您有疑问,我建议您首先使用个人id方法。