asigning id в киви на стороне python

im с использованием kivy. то, что я пытаюсь сделать, это иметь и «идею», ползунок и метку, содержащие текущее значение ползунка в строке в макете сетки

теперь получение макета прекрасное, но получение метки имеет текстовое значение так же, как текущее значение ползунка сложно. Я пытаюсь использовать конкрецию строк, чтобы ссылаться на метку с тем же суффиксом числа, что и слайдер, с которым он сопряжен.

Я думаю, проблема заключается в том, что я пытаюсь назначить идентификаторы на стороне python, когда их обычно нужно делать на стороне kv. Это либо то, либо тот факт, что идентификаторы, которые я назначаю, являются строками, когда kv обычно ожидает простой текст. любая помощь будет оценена

class ScatterTextWidget(FloatLayout): def run_me(self): r=1 main_list=self.ids.main_list main_list.clear_widgets() main_list.height=0 for idea in imported_ideas: main_list.add_widget(Label(text=idea,color=(0,0,0,1),id='idea_label_'+str(r))) main_list.add_widget(Slider(id='Slider_'+str(r),min=0,max=10,value=5, step=1,on_value_pos=self.slider_slid(self))) main_list.add_widget(Label(color=(0,0,0,1),id='value_label_'+str(r))) value_label=self.ids['value_label_'+str(r)] # get this working and then apply the method into slider slid value_label.text='xxx' main_list.height+=35 r +=1 button_1=self.ids.button_1 button_1.text='Begin' button_1.bind(on_press=self.begin) def slider_slid(self,sender): s=str(sender.id) value_label=self.ids['value_label_'+str(s[12:])] value_label.text=str(sender.value) 

value_label = self.ids ['value_label _' + str (s [12:])] KeyError: 'value_label_'

  • Чтение из файла gzip в python
  • ImportError при установке pip в virtualenv
  • Pythonic способ вычисления длины списков в столбце dataframe pandas
  • Разбор одного столбца из csv в текстовый файл с использованием python
  • Прогулка по всем узлам XML в элементарной структуре
  • Не удается установить Pandas с OpenShift
  • Как печатать на консоли в Py Test?
  • Объединение двух PDF-файлов
  • One Solution collect form web for “asigning id в киви на стороне python”

    self.ids только собирает идентификаторы от детей в правиле языка kv виджета. Он не знает о виджетах, добавленных через python.

    Однако вам не нужно использовать идентификатор. В этом случае вы можете сохранить, например, словарь ключей id -> widget.

     self.keys_dict = {} for idea in imported_ideas: new_widget = Label(color=(0,0,0,1),id='value_label_'+str(r))) main_list.add_widget(new_widget) self.keys_dict['value_label_' + str(r)] = new_widget 

    Затем вы можете получить доступ к нему с помощью self.keys_dict['value_label_' + str(s[12:])] или что угодно.

    Я полагаю, что на практике вы также можете изменить словарь актуальных слов таким же образом, хотя я субъективно чувствую, что предпочтительнее поддерживать собственный словарь с именем, представляющим его более конкретное содержание.

    Python - лучший язык программирования в мире.