在文本文件 python tkinter 中生成新行的条目末尾随机 space

Random space at the end of entry that generates new line in a text file python tkinter

我在这个问题上工作了 6 个多小时来尝试和测试,以找出问题所在。

这个问题可能是针对初学者的,但我在互联网上找不到关于这个问题的任何信息。 我在这里做了一个示例代码来说明问题。

当您在两个条目上键入内容并单击按钮并打开创建的文本文件时。 您可以看到它做了预期的事情,但是当您再次单击时,会创建一个新行。 在条目的末尾,您可以看到有一个 space 并创建了一个新行。

我想删除创建新行的条目末尾的 space。 或者更好地解释它的原因以及我怎样才能让它变得更好。

希望我把问题说清楚了。

import tkinter as tk
from tkinter import *
import os
import subprocess

saved_data_textfile_name = "Saved data.txt"

app = tk.Tk()

font = ('Verdana', 17)

entry = tk.Entry(app, width=40, font=font)
entry2 = tk.Entry(app, width=40, font=font)

entry.pack(side="top")
entry2.pack(side="bottom")

button1 = tk.Button(app, text="save data", command=lambda: creating_file())
button1.pack(side="bottom")


def creating_file():
    saved_data = open(saved_data_textfile_name, "w+")
    data = entry.get()
    data2 = entry2.get()
    data3 = f"{data}\n{data2}"
    saved_data.truncate(0)
    saved_data.write(data3)
    print("done")
    command = '"{}" "{}" "{}"'.format(
        sys.executable,
        __file__,
        os.path.basename(__file__),
    )
    app.quit()
    subprocess.Popen(command)


def saved_data_from_relic():
    if os.path.exists(saved_data_textfile_name):
        f = open(saved_data_textfile_name)
        lines = f.readlines()
        asd = lines[0]
        asd1 = lines[1]
        entry.insert(0, asd)
        entry2.insert(0, asd1)
        f.close()


saved_data_from_relic()
app.mainloop()

问题是当您在函数 saved_data_from_relic 中读取文件内容时,asd 将包含换行符。
您可以做的一件事是阅读全部内容并使用 splitlines 字符串方法来避免保留换行符。

# Change this line
lines = f.readlines()

# To
lines = f.read().splitlines()