如何在Kivy应用中获取输入框内容并点击按钮保存
实现Kivy按钮点击保存输入框内容的解决方案
要实现点击按钮保存输入框内容,你需要给输入框和按钮建立关联,并编写保存逻辑,具体修改如下:
修改Python代码
在DrawCanvasWidget类中添加ObjectProperty关联输入框,再编写保存内容的方法:
from kivy.app import App from kivy.graphics import Line, Color from kivy.uix.widget import Widget from kivy.properties import ObjectProperty from kivy.config import Config Config.set('graphics', 'resizable', False) from kivy.core.window import Window Window.size = (450, 800) class DrawCanvasWidget(Widget): # 定义属性关联输入框 input_box = ObjectProperty(None) def save_input(self): # 获取输入框内容 content = self.input_box.text.strip() if content: # 写入文件,这里用input_content.txt作为保存文件 with open('input_content.txt', 'a', encoding='utf-8') as f: f.write(content + '\n') # 清空输入框 self.input_box.text = '' print("内容已保存") else: print("输入内容为空,不保存") class PaintApp(App): def build(self): self.draw_canvas_widget = DrawCanvasWidget() return self.draw_canvas_widget if __name__ == "__main__": PaintApp().run()
修改kv代码
给TextInput设置id,并绑定按钮的on_press事件到保存方法:
<DrawCanvasWidget> input_box: input_text # 关联Python中的input_box属性 orientation: "vertical" canvas.before: Color: rgba: [1,1,1,1] Rectangle: pos: self.pos size: self.size TextInput: id: input_text # 设置id供关联使用 multiline:False font_size:20 pos:75,450 size:300,40 allow_copy:False cursor_color:[0,1,0,1] Button: text:'ok' bold:True size_hint:None,None size:100,50 pos:180,380 on_press: root.save_input() # 点击按钮触发保存方法
关键说明
ObjectProperty用来在Python和kv之间建立控件关联,通过id绑定后就能在Python代码中直接操作输入框。save_input方法里做了简单的非空判断,避免保存空内容,保存后清空输入框方便下次输入。- 文件保存用了追加模式(
'a'),每次保存的内容会加到文件末尾,你也可以改成覆盖模式('w'),根据需求调整。
内容的提问来源于stack exchange,提问作者rtyrtyrtyqa
相关产品推荐
相关产品推荐

