使用单个函数和不同的Kivy按钮更新多个Python变量



我想替换的7个函数

OLD
def press_saturday(self, *args):
if self.set_saturday == '0':
self.set_saturday = '1'
else:
self.set_saturday = '0'

具有一个根据按下的按钮更新正确变量的功能。

NEW
def alarm_wkdy(self, value, day):
if value == '0':
value = '1'
else:
value = '0'

kivy按钮

OLD
Button:
id: 'saturday'
text: "S"
font_size: 20
size_hint: .1, .12
pos_hint: {'x': .65, 'y': 0}
on_press: root.manager.press_saturday(*args)
background_color: root.manager.set_saturday, 0, 0, root.manager.set_saturday
NEW
Button:
id: 'saturday'
text: "S"
font_size: 20
size_hint: .1, .12
pos_hint: {'x': .75, 'y': 0}
value: root.manager.set_saturday
day: 'set_saturday'
on_press: root.manager.alarm_wkdy(self.value, self.day)
background_color: root.manager.set_saturday, 0, 0, root.manager.set_saturday

目标是在按下相应按钮时更新self.set_任何。请帮忙。非常感谢。

我建议从函数内部删除全局变量,停止将"1"one_answers"0"作为字符串读取,并切换到布尔否定,而是返回所需的值。看起来你想返回切换后的值1/0,以及星期几,所以我会将它们作为元组返回,如下所示:

class myclass:
def __init__(self):
pass
def alarm_wkdy(self, value, day):
return (not value, day)
c = myclass()
print(c.alarm_wkdy(True,'Wednesday'))
(False, 'Wednesday')

我决定不再是一个傻瓜,我没有调用函数来完成这项工作,而是将逻辑放在按钮本身应该放的位置。

Button:
id: 'saturday'
text: "S"
font_size: 20
size_hint: .1, .12
pos_hint: {'x': .75, 'y': 0}
on_press: root.manager.set_saturday = str((int(root.manager.set_saturday) -1) * -1)
background_color: root.manager.set_saturday, 0, 0, root.manager.set_saturday

最新更新