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

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

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

  • Взаимодействие между виджетами Kivy в Python
  • Изменение цвета фона кнопки в Kivy
  • Kivy - базовое приложение имеет странное выравнивание
  • Запуск приложения в фоновом режиме
  • Переключение киви
  • Запуск нескольких приложений 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_'

  • Python не работает в командной строке git bash
  • Вызов метода из строки
  • Python 2.7 Cx_Freeze: ImportError: нет модуля с именем __startup__
  • Учет списка, карта и numpy.vectorize performance
  • Получение вложений из gmail через python или php
  • Каков питонический способ использования геттеров и сеттеров?
  • 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 - лучший язык программирования в мире.