鱼C论坛

 找回密码
 立即注册
查看: 2281|回复: 1

[已解决]tk中with语句报错,不知道怎么改

[复制链接]
发表于 2023-3-22 11:01:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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()
最佳答案
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()
屏幕截图 2023-03-22 110027.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 05:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表