如何获取matplotlib TextBox的文本并保存到文件,现有代码为何无法运行
问题原因
- 第一,
np.savetxt不支持直接写入单个字符串。该方法设计用于存储numpy数组类的结构化数据,传入普通字符串时会默认迭代字符串的单个字符写入,要么直接报错,要么输出内容完全不符合预期。 - 第二,
TextBox.on_submit的触发逻辑和你的需求不匹配。该回调仅会在用户聚焦TextBox后按下回车键时触发,你提到是“按钮按下时触发”,当前绑定逻辑不会响应你自定义的按钮点击动作。
修复方案
场景1:点击自定义按钮时保存文本
不需要绑定on_submit回调,直接在按钮的点击回调中读取info_box.text属性即可拿到TextBox的当前文本,使用原生Python文件操作写入即可:
# 自定义按钮的点击回调函数 def button_click(event): # 直接读取TextBox实例的text属性获取完整内容 info = info_box.text # 普通方式写入文本文件 with open(os.path.join(directory, 'info.txt'), 'w', encoding='utf-8') as f: f.write(info)
场景2:仅需要回车触发保存
如果不需要自定义按钮,就是想在TextBox中按下回车时保存内容,直接把原有代码中的np.savetxt替换为原生文件写入即可:
def get_info(text): # 回调传入的text参数就是TextBox的当前内容 with open(os.path.join(directory, 'info.txt'), 'w', encoding='utf-8') as f: f.write(text) info_box.on_submit(get_info)
如果一定要使用np.savetxt写入字符串,需要把字符串放到列表中指定格式化参数:np.savetxt(os.path.join(directory, 'info.txt'), [info], fmt='%s'),但该场景下没必要引入numpy依赖,更推荐原生文件操作。
内容的提问来源于stack exchange,提问作者Raquel
相关产品推荐
相关产品推荐

