Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.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 3.x kivy属性未更新_Python 3.x_Kivy_Kivy Language - Fatal编程技术网

Python 3.x kivy属性未更新

Python 3.x kivy属性未更新,python-3.x,kivy,kivy-language,Python 3.x,Kivy,Kivy Language,所以我正在开发一个基于kivy的GUI 我对togglebutton使用状态(“向下”和“正常”)而不是布尔值而感到非常恼火,所以我创建了自己的togglebutton: class Toggle(ToggleButton): pressed = BooleanProperty(False) def on_state(self, _, state): self.pressed = state == "down" def on_pre

所以我正在开发一个基于kivy的GUI

我对togglebutton使用状态(“向下”和“正常”)而不是布尔值而感到非常恼火,所以我创建了自己的togglebutton:

class Toggle(ToggleButton):
    pressed = BooleanProperty(False)

    def on_state(self, _, state):
        self.pressed = state == "down"

    def on_pressed(self, _, pressed):
        self.state = "down" if pressed else "normal"
在我的kv文件中,我有一个测试按钮:

Main:
    Toggle:
        size_hint: None, 1
        width: 60
        pressed: root.test0
        on_release: root.test()
    Toggle:
        size_hint: None, 1
        width: 60
        pressed: root.test1
        on_release: root.test()
使用此python代码:

class Main(BoxLayout):
    test0 = BooleanProperty(False)
    test1 = BooleanProperty(False)

    def test(self):
        print("test", self.test0, self.test1)
如果我更改test0的值,则切换按钮状态 但是如果我点击按钮,test0不会更新

这也需要适用于任何其他变量,如test1。 使用kivy Spinner,如果向“文本”添加属性,它将自动更新属性


我做错了什么?

这是因为没有根据按钮的状态设置
test0
。请更改按下按钮时的功能
,如下所示,该功能应能正常工作:

    def on_pressed(self, _, pressed):
        if pressed:
            self.state = "down"
            self.parent.test0 = True
        else:
            self.state = "normal"
            self.parent.test0 = False

所以我想我所做的并不存在。我所说的微调器自动更新属性的说法是不正确的

我偷看了一下kivy checkbox小部件,并用它更新了我的代码:

切换:

class Toggle(ToggleButton):
    def get_active(self):
        return self.state == "down"

    def set_active(self, value):
        self.state = "down" if value else "normal"

    active = AliasProperty(get_active, set_active, bind=("state",))
和千伏

Toggle:
    size_hint: None, 1
    width: 60
    active: root.test0
    on_active: root.test0 = self.active
    on_active: root.test()

现在,如果活动更改,test0将随之更改,这只是多做了一点工作。

这不是我要问的问题,我编辑了这个问题。