如何在Tk窗口中显示文本文件内容?解决FileNotFoundError报错
修复FileNotFoundError问题
你的错误核心原因是没有使用文件的完整路径:os.listdir()返回的只是目标目录里的文件名,并非完整路径,直接用这个文件名调用open()时,Python会在当前脚本的工作目录下查找文件,而非你指定的dir_path目录,所以找不到目标文件。
此外代码里还有两个小问题需要修正:
- 变量名重复:
with open(file) as file:中重复使用file变量,会覆盖之前的文件名变量,导致后续操作异常; - 未定义的
configfile:代码里的configfile.insert(INSERT, file.read())中configfile从未定义,执行会报错。
以下是修正后的完整代码:
import tkinter import os v_entry = tkinter.Tk(className='View Entrys') v_entry.geometry("400x200") dir_path = r'C:/Users/crist/OneDrive/Desktop/Express Main/Express Entrys/' vlist = os.listdir(dir_path) lbox = tkinter.Listbox(v_entry) lbox.place(x=268, y=1) for item in vlist: lbox.insert(tkinter.END, item) def scont(event): x = lbox.curselection()[0] filename = lbox.get(x) # 拼接完整文件路径 full_file_path = os.path.join(dir_path, filename) with open(full_file_path, 'r') as f: file_content = f.read() # 清空文本框并插入内容 text.delete('1.0', tkinter.END) text.insert(tkinter.END, file_content) text = tkinter.Text(v_entry, bg='cyan') text.pack() lbox.bind("<<ListboxSelect>>", scont) v_entry.mainloop()
关键改动说明:
- 用
os.path.join(dir_path, filename)拼接完整路径,确保open()能找到正确的文件; - 将文件名变量改为
filename,文件对象用f,避免变量名冲突; - 移除了未定义的
configfile相关代码,改为直接读取文件内容到文本框; - 显式指定
open()的模式为'r'(只读),代码更清晰。
内容的提问来源于stack exchange,提问作者Cristan Erwin
相关产品推荐
相关产品推荐

