在文本末尾在文本文件python tkinter中生成换行的条目末尾的随机空格

问题描述 投票:1回答:1

我在这个问题上进行了6个多小时的尝试和测试,以找出问题所在。

该问题可能是针对初学者的,但我在互联网上找不到有关此问题的任何信息。我在此处制作了一个示例代码来仅显示问题。

当您在两个条目上都键入内容并单击按钮并打开创建的文本文件时。您可以看到它执行了预期的操作,但是当您再次单击时,将创建一个新行。在条目的末尾,您可以看到有一个空格并创建了新行。

我想删除条目末尾的空格,以创建新行。或者更好地解释它的原因以及如何使它变得更好。

我希望我把问题弄清楚了。

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()
python tkinter newline
1个回答
1
投票

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

# Change this line
lines = f.readlines()

# To
lines = f.read().splitlines()
© www.soinside.com 2019 - 2024. All rights reserved.