Как перенести TextInput в данные Pandas и записать его в таблицу Excel?Kivy - PullRequest
0 голосов
/ 09 марта 2019

Поэтому у меня возникла проблема с использованием панд с kivy для обновления / создания листа Excel.Я хочу взять пользовательский ввод из кадра kivy и сохранить его в переменную, содержащую pandas DataFrame.Оттуда я хочу написать это на листе Excel.Проблема в том, что TextInput будет выдавать пользовательский ввод только как адрес памяти, поэтому модуль pandas не сможет получить доступ к информации, чтобы записать ее в файл.Любая помощь будет принята с благодарностью.

from kivy.app import App
from kivy.app import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import ObjectProperty
import pandas

class MainWindow(Screen):
    first_name = ObjectProperty(None)
    last_name = ObjectProperty(None)
    level = ObjectProperty(None)


    def btn(self):
        self.L = ()
        print("First: " + self.first_name.text,
              "Last: " + self.last_name.text,
              "Level: " + self.level.text)

        self.L = pandas.DataFrame({str(self.first_name) + str(self.last_name): self.level})

        self.first_name.text = ''
        self.last_name.text = ''
        self.level.text = ''
        print(self.L)
        with pandas.ExcelWriter('student_info.xlsx') as writer:
            self.L.to_excel(writer)




class SecondWindow(Screen):
    pass


class WindowManager(ScreenManager):
    pass


kv = Builder.load_file("my2.kv")


class MyMainApp(App):

    def build(self):
        return kv

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

В первом операторе печати печатается нужная информация, но как только я помещаю эту информацию в словарь, словарь печатается только с расположением объектов.Я не понимаю, что меняется при помещении этих строк в словарь.

Файл языка Kivy:

WindowManager:
    MainWindow:
    SecondWindow:


<MainWindow>:
    name: "main"

    first_name: first
    last_name: last
    level: level

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

        GridLayout:
            cols: 2
            Label:
                text: "Student First Name: "
            TextInput:
                id: first
                multiline: False

            Label:
                text: "Student Last Name: "
            TextInput:
                id: last
                multiline: False

            Label:
                text: "Student Level: "
            TextInput:
                id: level
                multiline: False

        Button:
            size_hint: 0.3, 0.2
            text: "Submit"
            on_press: root.btn()
        FloatLayout:

            Button:
                font_size: 25
                size_hint: 0.3, 0.2
                text: ">"
                on_release:
                    app.root.current = "second"
                    root.manager.transition.direction = "left"
                pos_hint: {"right":1, "bottom": 1}

            Button:
                font_size: 25
                size_hint: 0.3, 0.2
                text: "<"
                on_release:
                    app.root.current = "main"
                    root.manager.transition.direction = "right"
                pos_hint: {"left":1, "bottom": 1}



<SecondWindow>
    name: "second"

    Button:
        font_size: 25
        size_hint: 0.3, 0.2
        text: "<"
        on_release:
            app.root.current = "main"
            root.manager.transition.direction = "right"
        pos_hint: {"left":1, "bottom": 1}

1 Ответ

0 голосов
/ 09 марта 2019

Итак, через некоторое время после публикации я смог найти ответ по этому сообщению:

здесь

Немного смущенно, что мне понадобилось 5 часов, чтобы выяснить такую ​​незначительную деталь, но, эй, что вы можете сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...