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: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]