Цель: При наборе одной кнопки все цвета кнопок сбрасываются на цвет по умолчанию, а нажатая кнопка меняет цвет.(поэтому будет только одна кнопка с другим цветом)
setup .py file
class Profiles(Screen):
def __init__(self, **kwargs):
super(Profiles, self).__init__(**kwargs)
Clock.schedule_once(self.create_profs, -1)
def create_profs(self, *args):
#create buttons and screens for each item in acc_abr
for i in acc_abr:
#AccountOne inherits from kivy's Screen class. Store new screen into a screen manager named "am"
self.ids["am"].add_widget(AccountOne(name=i))
#AccButt inherits from kivy's Button class
self.ids["acc_butt_box"].add_widget(AccButt(text=i, id=i, on_press=partial(self.switching_function, i)))
#change current screen
def switching_function(self, screename, *args):
self.ids["am"].current = screename
Кнопки создаются в цикле for, и им присваивается идентификатор на основе элементов вacc_abr
Надо поработать с содержимым AccButt
, которое выглядит следующим образом:
class AccButt(Button):
def __init__(self, **kwargs):
super(Button,self).__init__(**kwargs)
self.bind(on_press = self.change_butt_color)
def change_butt_color(self, *args):
self.background_color = 0,0,0,0
Прежде всего, у меня есть доступ ко всем идентификаторам кнопок с момента егоидентификаторы основаны на списке acc_abr
.
Итак, моей первой идеей было создание цикла for, который изменил цвет всех кнопок по умолчанию, прежде чем изменить цвет своих собственных.что выглядит следующим образом:
def change_butt_color(self, *args):
for butts in acc_abr:
self.parent.ids[butts].background_color = 1,1,1,1
self.background_color = 0,0,0,0
Проблема в том, что я получаю ключевую ошибку для всего, что находится в butts
.Таким образом, у меня проблема со связью с кнопками.
Возможно, я неправильно понимаю, где находятся другие кнопки, или я неправильно назначил идентификатор кнопкам (AccButt
)или время мешает.