You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Tkinter文本框的事务号追加保存至TXT文件新行?

解决Tkinter保存事务号覆盖文件的问题

你的代码存在两个核心问题,导致内容被覆盖且有潜在报错风险:

  • 使用"w"模式打开文件会直接清空原有内容,需改用追加模式
  • Text组件与grid()方法写在同一行时,变量会被赋值为None,调用get()会触发属性错误

具体修改方案:

  1. 切换文件打开模式:将open("matters.txt", "w")改为open("matters.txt", "a"),新内容会直接追加到文件末尾而非覆盖原有数据。
  2. 拆分组件创建与布局:把Text组件的创建和grid()布局拆成两行,保证my_text_box指向实际的文本框对象,避免调用get()时出错。
  3. 可选体验优化:增加非空判断避免保存空白内容,保存后自动清空文本框方便后续输入。

修改后的完整代码:

from tkinter import *

window = Tk()
window.geometry("700x250")

def save_text():
    # 获取输入内容并去除前后空白字符
    matter_num = my_text_box.get(1.0, END).strip()
    if matter_num:
        # 用追加模式打开文件,自动处理关闭操作
        with open("matters.txt", "a", encoding="utf-8") as text_file:
            text_file.write(matter_num + "\n")
        # 清空文本框,方便下次输入
        my_text_box.delete(1.0, END)

label = Label(window, text='Save the matter number 👉 Matter number:').grid(row=3, column=1)

# 拆分创建与布局,确保变量指向Text组件实例
my_text_box = Text(window, height=2, width=40)
my_text_box.grid(row=3, column=2, padx=10, pady=12)

save = Button(window, text="Save matter", command=save_text).grid(row=3, column=3, padx=10, pady=10)

window.mainloop()

额外说明:

  • 使用with语句管理文件,无需手动调用close(),避免资源泄漏
  • 每条事务号末尾添加换行符,确保内容自动换行显示

内容的提问来源于stack exchange,提问作者Mogamad Zubair Isaacs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 21:13:16