You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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()

关键改动说明:

  1. 用os.path.join(dir_path, filename)拼接完整路径,确保open()能找到正确的文件;
  2. 将文件名变量改为filename,文件对象用f,避免变量名冲突;
  3. 移除了未定义的configfile相关代码,改为直接读取文件内容到文本框;
  4. 显式指定open()的模式为'r'(只读),代码更清晰。

内容的提问来源于stack exchange,提问作者Cristan Erwin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 08:35:20