Python - 从文件中删除一行(使用条目的待办事项列表程序,与其他帖子不同)

Python - Deleting a line from a file (To-Do List program that uses entries, different from other posts)

我的代码有问题。我正在尝试从文件中删除特定行。我正在 Tkinter 中制作一个待办事项列表程序,并且我使用标签作为待办事项列表。我有两个按钮,'Add Item' 和 'Delete Item'。我还有一个输入框,按钮使用 .get() 方法从条目中获取字符串。删除按钮不起作用,因为我找不到从程序用来存储列表的文件中删除一行的方法。我已经查看了许多其他关于同一问题的 post,但我的不同。每当我 运行 程序,并在我填写文本框后单击删除项目时,它会从文件中删除所有项目,但我只希望它删除一个项目。问题不是@JetMashKangaroo 在 post: How to delete a line from a file in Python 中遇到的问题。

这是代码片段:

def dele():
    global ItemName
    global Display
    global List
    ToDoDel = ItemName.get()
    new_f = List.readlines()
    List.seek(0)
    for line in new_f:
        if ToDoDel not in line:
            List.write(line)
    List.truncate()
    Display['text'] = List.readlines()

ItemName 是输入框。 Display 是显示待办事项列表的标签。列表是下面的变量:

List = open('***/***/To-Do_List.txt','r+')

该程序运行完美,但我无法添加此删除功能,因为它会删除文件中的所有文本。按下按钮 'Delete Item' 时调用函数 dele。将不胜感激。

您 运行 遇到问题的最可能原因是您试图在修改列表的同时迭代它。 Here's an example post 遇到类似问题的其他人 运行。

我的建议是跟踪要在循环中修改的索引,然后在循环完成后删除它们。