fishccy 发表于 2023-3-22 11:01:32

tk中with语句报错,不知道怎么改

from tkinter import*
from tkinter.filedialog import*
root=Tk()
root.geometry('500x200')

def test():
    with askopenfilename(title='上传文件',initialdir='桌面',filetypes=[('文本文件','.txt')])as f:
      show['text']=f.read()

Button(root,text='选择读取的文本文件',command=test).pack()

show=Label(root,width=40,height=3,bg='green')
show.pack()

mainloop()

isdkz 发表于 2023-3-22 11:09:26

本帖最后由 isdkz 于 2023-3-22 11:49 编辑

因为 askopenfilename 返回的是一个选中的路径的字符串,不是一个文件对象,所以不能直接用 with

对你的代码修改如下:

from tkinter import *
from tkinter.filedialog import *

root = Tk()
root.geometry('500x200')

def test():
    #   将 askopenfilename 的结果赋给 file_path,这是一个表示路径的字符串
    file_path = askopenfilename(title='上传文件', initialdir='桌面', filetypes=[('文本文件', '.txt')])
    if file_path:                     # 如果路径存在,则用上下文管理器打开文件
      with open(file_path, 'r') as f:
            content = f.read()
      show['text'] = content

Button(root, text='选择读取的文本文件', command=test).pack()

show = Label(root, width=40, height=3, bg='green')
show.pack()

mainloop()
页: [1]
查看完整版本: tk中with语句报错,不知道怎么改