让用户自己选择文件路径——以窗口形式

举报
叶安义 发表于 2023/12/18 16:03:41 2023/12/18
【摘要】 对于一些人来说,可视化操作可能比较重要from tkinter import *import tkinter as tkimport tkinter.filedialogfrom PIL import Image, ImageTk# 选择并显示图片def choosepic(): path_ = tkinter.filedialog.askopenfilename() # 返回一个文...

对于一些人来说,可视化操作可能比较重要

from tkinter import *
import tkinter as tk
import tkinter.filedialog
from PIL import Image, ImageTk


# 选择并显示图片
def choosepic():
    path_ = tkinter.filedialog.askopenfilename()  # 返回一个文件路径的字符串
    path.set(path_)
    # print(path)
    img_open = Image.open(entry.get())
    # img = ImageTk.PhotoImage(img_open.resize((400,400)))
    img = ImageTk.PhotoImage(img_open)
    lableShowImage.config(image=img)
    lableShowImage.image = img


if __name__ == '__main__':
    # 生成tk界面 app即主窗口
    app = tk.Tk()
    # 修改窗口titile
    app.title("显示图片")
    # 设置主窗口的大小和位置
    app.geometry("700x400")
    # Entry widget which allows displaying simple text.
    a = tk.Label(app, text='请选择显示的图片:')
    a.pack()
    path = tk.StringVar()
    entry = tk.Entry(app, state='readonly', text=path, width=80)
    entry.pack()
    # 使用Label显示图片
    lableShowImage = tk.Label(app)
    lableShowImage.pack()
    # 选择图片的按钮
    buttonSelImage = tk.Button(app, text='选择图片', command=choosepic)
    buttonSelImage.pack()
    # buttonSelImage.pack(side=tk.BOTTOM)
    # Call the mainloop of Tk.

    app.mainloop()

上面这种方法是使用tkinter生成窗口,path_ = tkinter.filedialog.askopenfilename()获取选择的文件及路径,如下:

import tkinter 
path = tkinter.filedialog.askopenfilename()
print(path)

filedialog后面可以接这些参数,比如askdirectory()只能选择文件夹,返回选择文件夹的路径。

["FileDialog", "LoadFileDialog", "SaveFileDialog",
           "Open", "SaveAs", "Directory",
           "askopenfilename", "asksaveasfilename", "askopenfilenames",
           "askopenfile", "askopenfiles", "asksaveasfile", "askdirectory"]
path = tkinter.filedialog.askdirectory()
print(path)

总的来说,文件对话框在 GUI 程序中经常的使用到,比如上传文档需要从本地选择一个文件,包括文件的打开和保存功能都需要一个文件对话框来实现。Tkinter 提供文件对话框被封装在tkinter.filedailog模块中,该模块提供了有关文件对话框的常用函数,经常使用的有以下几个:

方法 说明
Open() 打开个某个文件
SaveAs() 打开一个保存文件的对话框
askopenfilename() 打开某个文件,并以包函文件名的路径作为返回值
askopenfilenames() 同时打开多个文件,并以元组形式返回多个文件名
askopenfile() 打开文件,并返回文件流对象
askopenfiles() 打开多个文件,并以列表形式返回多个文件流对象
asksaveasfilename() 选择以什么文件名保存文件,并返回文件名
asksaveasfile() 选择以什么类型保存文件,并返回文件流对象
askdirectory() 选择目录,并返回目录名

参考链接

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。