为什么Python没有进入For循环以插入列表框?

为什么Python没有进入For循环以插入列表框?,python,tkinter,text-files,Python,Tkinter,Text Files,简单地说,我正在使用Tkinter作为图形界面,并希望: 读取文本文件 打印“测试”以确保一切顺利进行 清除当前列表框 用文本文件中的每一行填充列表框 打印“另一个测试”以确保我已经完成了这一步 with open("chat.txt", "a+") as chat: print("test") listbox.delete(first=0, last="END") for x in ch

简单地说,我正在使用Tkinter作为图形界面,并希望:

  • 读取文本文件

  • 打印“测试”以确保一切顺利进行

  • 清除当前列表框

  • 用文本文件中的每一行填充列表框

  • 打印“另一个测试”以确保我已经完成了这一步

    with open("chat.txt", "a+") as chat:
       print("test")
       listbox.delete(first=0, last="END")
    
       for x in chat:
          listbox.insert("END", x)
          print("another test")
    

  • “测试”可以打印,但“另一个测试”不能打印。

    首先,必须将文件光标放在文件的开头。或者按照上面的建议使用
    r+
    模式

    第二,大写的变量通常指从tkinter导入的常量

    from tkinter import *
    
    root = Tk()
    listbox = Listbox(root)
    listbox.pack(expand=True, fill='both', padx=10, pady=10)
    
    with open("chat.txt", "a+") as chat:
       print("test")
       listbox.delete(first=0, last=END)
       chat.seek(0) # Position file cursor at beginning of file
    
       for x in chat:
          listbox.insert(END, x)
          print("another test")
    

    a+
    模式下打开文件会将文件指针放在文件的末尾,因此没有任何内容可读取。那么,我应该使用哪一个?我认为它是最好的,因为它允许读、写,如果还没有新的文件,就可以创建一个新的文件。要读取现有的文件内容并编写新的内容,请使用
    r+
    。问题中没有任何内容表明需要写入该文件。只需使用
    open(“chat.txt”)
    。这可能是个坏主意。如果他不明白为什么
    “a+”
    将指针留在文件的末尾开始,那么如果指针提前移动,他可能会无意中覆盖文件的某些部分。