Как динамически обновлять текст метки в kivy, который импортируется из файла Excel? - PullRequest
0 голосов
/ 23 сентября 2019

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

Дляпример: в моем файле Excel есть 2 вопроса:

  1. Название компании?
  2. Отдел?

У меня есть 2 виджета ярлыков в моем графическом интерфейсе, итекст виджетов должен быть:

  1. Название компании?
  2. Отдел?

соответственно и должен динамически извлекаться из файла Excel.

Я столкнулся с ошибкой при попытке запустить мой код.

Questionnaire.py

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
import pandas as pd

class FetchData():
    file = pd.read_excel("Questionnaire.xlsx")
    Quest = file['QUESTIONS']

class Questions(Widget):
    Data = FetchData().Quest
    qvars =[]

    company = ObjectProperty(None)
    department = ObjectProperty(None)

    qvars.append(company)
    qvars.append(department)

    def validate(self):
        for i in range(len(self.qvars)):
            self.qvars[i].text = self.Data[i]

class QuestionnaireApp(App):
    def build(self):
        return Questions()

if __name__=="__main__":
    QuestionnaireApp().run()

Questionnaire.kv

<Questions>:
    company:company
    department:department

    GridLayout:
        cols:1
        size:root.width, root.height

        GridLayout:
            cols:1

            Label:
                id:company

            TextInput:

            Label:
                id:department

            TextInput:

        Button:
            text:"process"
            on_release: root.validate()

Я получаю следующееошибка:

   File "C:/Users/pavan m sunder/virtual environments/android/Questionnaire.py", line 23, in validate
     self.qvars[i].text = self.Data[i]
 AttributeError: 'kivy.properties.ObjectProperty' object has no attribute 'text'

Я ссылался на похожие вопросы, в которых была та же ошибка, но ни один из них не соответствует конкретно моей проблеме.

1 Ответ

0 голосов
/ 23 сентября 2019

Использование вашего qvars списка приводит к путанице, потому что это список объектов свойств, который не имеет правильного поведения - свойства Kivy являются дескрипторами, они работают только на уровне класса.

Вместо этого,просто используйте self.company или self.department в ваших методах.

...