如何动态更新从Excel文件导入的Kivy中的标签文本?

时间:2019-09-23 13:50:12

标签: python-3.x kivy kivy-language

我正在用基维创建一个调查表。我在GUI中添加了一些标签小部件。 我不想在代码中静态定义标签文本,相反,我的目标是动态更新从excel文件中获取的标签文本。

例如:我的excel文件有两个问题:

  1. 公司名称?
  2. 部门?

我的GUI中有2个标签小部件,小部件的文本应为:

  1. 公司名称?
  2. 部门?

分别并且必须从excel文件中动态获取。

当我尝试运行代码时遇到错误。

Questionnaire.py

Schema::create('taggables', function (Blueprint $table) {
        $table->primary(['tag_id', 'taggable_id', 'taggable_type']); //This is to avoid duplicate  relationships

        $table->unsignedInteger('tag_id');
        $table->unsignedInteger('taggable_id');
        $table->string('taggable_type');

        $table->timestamps();
    });

Questionnaire.kv

// A:
template<typename T>
using fcnPtr1 = void (T::*)(const int&);

// B:
typedef void(*fcnPtr2)(const int&);

class TestInterface
{
public:
    // A: This cause error 'fcnPtr1' is not a type
    virtual void setCallback(fcnPtr1 callback) = 0;

    // B: This is OK
    virtual void setCallback(fcnPtr2 callback) = 0;
};

我遇到以下错误:

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()

我提到的类似问题的错误相同,但是没有一个问题与我的问题特别匹配。

1 个答案:

答案 0 :(得分:0)

使用qvars列表会使事情搞砸,因为它是属性对象的列表,行为不正确-Kivy Properties是描述符,它们仅在类级别起作用。

相反,只需在您的方法中访问self.companyself.department