如何将文本输入转换为数据并将其写入excel工作表?基维

2024-05-19 02:29:38 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在使用pandas和kivy更新/创建excel表时遇到了一个问题。我想从kivy框架中获取用户输入,并将其保存到包含pandas数据框架的变量中。从那里,我想把它写进一张excel表格。问题是,TextInput只会将用户输入作为内存地址吐出,这样模块就无法访问信息将其写入文件。任何帮助都将不胜感激。你知道吗

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

在第一个print语句中,将打印所需的信息,但一旦我将该信息放入字典中,字典将只打印对象位置。我不明白把这些字串放进字典里有什么变化。你知道吗

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}

Tags: textnamefromimportselfapppandassize

热门问题