因此,我尝试从三个单选按钮中提取值,每个按钮都分配了自己的布尔值,即使我的按钮确实确实更改了自己的值,它们似乎也没有更改{ {1}}属性。
这是处理它的python代码:
let rectangle3 =
Repeat(2, robo {
let! _ = Repeat( 3, Forward)
let! _ = Repeat(90, Left )
let! _ = Repeat( 2, Forward)
return! Repeat(90, Left )
})
我提供了一种用于检查每个值状态的方法
这是代码的Kivy部分:
value:
答案 0 :(得分:1)
我认为主要问题是您不了解以下含义
value: root.blue
我认为您认为root.blue会更改(如果处于活动状态)会更改,但反之亦然,您要指出的是,每次更改root.blue都会更改Checkbox的状态,显然您从未更改过root.blue,因此将不会更新活动目录。反之亦然:
<CliClicker>:
blue: checkbox_blue.active
# ...
CheckBox:
id: checkbox_blue
group: "bg_color"
但是,尽管如此,这是一个坏主意,但最好还是认为每个功能都是一个黑匣子,可以接收输入并获取输出,在这种情况下,输出是颜色,因此我们创建了一个继承自GridLayout的自定义小部件并显示属性颜色:
*。py
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class CliClicker(BoxLayout):
pass
class MainApp(App):
def build(self):
return CliClicker()
if __name__ == '__main__':
MainApp().run()ç
*。kv
<OptionButton@Button>:
size_hint: (None,None)
width: 200
height: 40
<ColorSelector@GridLayout>:
cols: 6
color_sel: (.7,.7,.9,1)
canvas:
Color:
rgba: .9,.9,.9,1
Rectangle:
pos: self.pos
size: self.size
CheckBox:
group: "bg_color"
color: 0,0,0,1
active: True
on_active: if self.active: root.color_sel = .7,.7,.9,1
Label:
text: 'blue'
color: 0,0,0,1
CheckBox:
group: "bg_color"
color: 0,0,0,1
on_active: if self.active: root.color_sel = .9,.7,.7,1
Label:
text: 'red'
color: 0,0,0,1
CheckBox:
group: "bg_color"
color: 0,0,0,1
on_active: if self.active: root.color_sel = .7,.9,.7,1
Label:
text: 'green'
color: 0,0,0,1
<CliClicker>:
orientation: "vertical"
id: cliclicker
menuoptions: menuopts
TabbedPanel:
do_default_tab: False
height: 200
id: tabs
TabbedPanelItem:
text: "Menu"
id: menu
FloatLayout:
id: menuopts
color_property: (.7,.7,.9,1)
canvas:
Color:
rgba: self.color_property
Rectangle:
pos: self.pos
size: self.size
OptionButton:
text: 'Option 1'
pos_hint: {'right':.63, 'top':.9}
OptionButton:
text: 'Option 1'
pos_hint: {'right':.63, 'top':.8}
ColorSelector:
id: selector
size_hint: (None, None)
pos_hint: {'top': .7, 'right':.69}
height: 40
width: 300
on_color_sel: menuopts.color_property = self.color_sel