Python 3.x kivy属性未更新
所以我正在开发一个基于kivy的GUI 我对togglebutton使用状态(“向下”和“正常”)而不是布尔值而感到非常恼火,所以我创建了自己的togglebutton: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
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将随之更改,这只是多做了一点工作。这不是我要问的问题,我编辑了这个问题。