所以我在使用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}
所以在发布这篇文章后不久,我通过这篇文章找到了答案:
here
有点尴尬,我花了5个小时才弄明白这么一个小细节,但嘿,你能做什么呢。你知道吗
相关问题 更多 >
编程相关推荐