Форум сайта python.su
Пришел в тупик. Кусок кода:
box = BoxLayout(orientation='vertical')
self.layout = GridLayout(cols=1, size_hint_y=None)
self.layout.bind(minimum_height=self.layout.setter('height'))
root = RecycleView(size_hint1, None), sizeWindow.width,
Window.height-(Window.width/5)))
root.add_widget(self.layout)
for i in self.tempCategories:
text = str(self.data)
btn = Button(text=text, size_hint_y=None, on_press=lambda x: self.choiceCategory(i))
self.layout.add_widget(btn)
self.add_widget(box)
def choiceCategory(self, x)
print(self.data)
В общем проблема в том, что при нажатии на любую кнопку в консоль возвращается только последний i-ый элемент списка self.tempCategories, а мне нужно, чтобы каждая кнопка вызывала функцию со своим порядковым номером.
Офлайн
разобрался, вычитал в документации kivy, что метод instance возвращает параметры нажатой кнопки
1. из on_press убрал lambda
2. в функцию choice Category добавил instance
3. instance.text возвращает текст нажатой кнопки
Офлайн
можно было через bind привязать функцию те btn.bind(on_press=self.choiceCategory)
ps c self перед choiceCategory непонятно нужно не нужно … не знаю
у вас этот кусок кода в классе если да то нужно
Отредактировано AD0DE412 (Авг. 2, 2020 09:38:45)
Офлайн