Так как текст вашей кнопки не изменится, вам не нужно client_text
StringProperty
. StringProperty
отлично подходит, если вам нужно изменить текст Button
или Label
, но здесь нет необходимости.
Есть несколько способов выполнить то, что вы хотите. Вот моя первая мысль, используя список clientes
напрямую. Я переместил список clientes
в класс CustomDropDown1
, поскольку именно там он используется.
class CustomDropDown1(DropDown):
clientes = ['Sercom', 'Lideranca', 'Winover']
def __init__(self, screen_manager, **kwargs):
super(CustomDropDown1, self).__init__(**kwargs)
self.sm = screen_manager
self.is2Displayed = False
for button_num in range(2):
id = 'button' + str(button_num)
self.ids[id].text = self.clientes[button_num]
Я также добавил идентификаторы к вашим кнопкам и удалил свойства text:
в файле kv
:
<CustomDropDown1>:
padding: [0,0,0,0]
Button:
id: button0
size:(200,50)
size_hint:(None,None)
text_size: self.size
valign: 'center'
padding: (10,0)
on_release: root.select(self.text)
Button:
id: button1
size:(200,50)
size_hint:(None,None)
text_size: self.size
valign: 'center'
padding: (10,0)
on_release: root.select(self.text)
Таким образом, каждая кнопка имеет id
вида 'button #', где '#' - номер кнопки, затем цикл в методе __init__()
CustomDropDown1
создает идентификатор кнопки на основе номера и устанавливает текст, используя номер в качестве индекса в списке clientes
.
Другой подход - полностью исключить цикл и просто установить текст кнопки как
.
text: root.clientes[0]
для первой кнопки и
text: root.clientes[1]
для следующего и т. Д. (Со списком clientes
в классе CustomDropDown1
).