您现在的位置是:首页 > 技术教程 正文

Python之Tkinter包的filedialog模块介绍

admin 阅读: 2024-03-25
后台-插件-广告管理-内容页头部广告(手机)

Python之Tkinter包的filedialog模块介绍

在程序运行该过程中,当你需要手动选择文件或手动选择文件存储路径时,就需要用到tkinter库中filedialog提供的函数。tkinter的filedialog模块提供了一个简单的对话框界面,用于让用户选择文件或目录。它通常与tkinter一起使用,用于创建图形用户界面(GUI)应用程序。Tkinter库是python默认的GUI库,它是python的内置库不需要安装。

官方介绍见https://docs.python.org/zh-cn/3/library/dialog.html#module-tkinter.filedialog

filedialog模块包含了一些常用的对话框,包括:

1. askopenfilename函数:打开文件对话框,用于选择一个文件,返回文件路径,类型为字符串。语法格式如下:askopenfilename(**options),其中**options是可选的关键字参数。

2. askopenfilenames函数:打开文件对话框,用于选择多个文件,返回一个元组,包括所有选择文件的路径。语法格式如下:askopenfilenames(**options),其中**options是可选的关键字参数。

3. asksaveasfilename函数:保存文件对话框,用于选择文件的保存路径和文件名。语法格式如下:asksaveasfilename(**options) ,其中**options是可选的关键字参数。

4. askdirectory函数:选择目录对话框,用于选择一个目录,返回目录路径。语法格式如下:askdirectory(**options) ,其中**options是可选的关键字参数。

这些对话框提供了用户友好的界面,使得用户可以方便地浏览文件系统,选择文件或目录。在tkinter应用程序中,可以使用filedialog模块来创建这些对话框,以便用户可以与文件系统进行交互。

**options关键字参数常用的有:

☆ title  指定文件对话框的标题栏文本。

☆ defaultextension  指定文件的后缀,例如:defaultextension='.jpg',那么当用户输入一个文件名'Python'的时候,文件名会自动添加后缀为'Python.jpg' 。注意:如果用户输入文件名包含后缀,那么该选项不生效。允许使用 “*” 通配符。

☆ filetypes  指定筛选文件类型的下拉菜单选项,该选项的值是由二元组构成的列表,每个二元组是由(类型名,后缀)构成,例如:filetypes=[('文本', '.txt'), ('栅格', '.tif'), ('动图', '.gif')]。(看情况,当文件夹中文件很多且类型很多,建议给出该参数)

☆ initialdir  指定打开保存文件的默认路径,默认路径是当前文件夹。

☆ multiple  是否确定选择多个文件,if true user may select more than one file。

例如

选择一个文件:

filedialog.askopenfilename(title='请选择一个文件', initialdir=r'D:\数据\测试数据', filetypes=[("文本文档", ".txt"), ('Excel', '.xls .xlsx'), ('All Files', ' *')], defaultextension='.tif', multiple=True)

选择多个文件:

filedialog.askopenfilename(title='请选择多个文件', initialdir=r'D:\数据\测试数据', filetypes=[( "文本文档", ".txt"), ('Excel', '.xls .xlsx'), ('All Files', ' *')])

选择文件存储路径:

filedialog.asksaveasfile(title='请选择文件存储路径', initialdir=r'D:\数据\测试数据', filetypes=[( "文本文档", ".txt"), ('Excel', '.xls .xlsx'), ('All Files', ' *')], defaultextension='.tif')

选择文件夹:

filedialog.askdirectory(title='选择存放的位置!', initialdir=r'D:\数据\测试数据')

★简单的示例,使用模块tkinte的filedialog模块来创建打开文件对话框:

  1. import tkinter as tk
  2. from tkinter import filedialog
  3. def open_file_dialog():
  4. file_path = filedialog.askopenfilename()
  5. if file_path:
  6. print("选择的文件路径为:", file_path)
  7. # 创建tkinter窗口
  8. root = tk.Tk()
  9. root.geometry("300x200") # 设置宽度为300像素,高度为200像素
  10. root.title("文件对话框示例")
  11. # 创建打开文件按钮
  12. open_button = tk.Button(root, text="打开文件", command=open_file_dialog)
  13. open_button.pack(pady=20)

运行效果:

★获得文件全名

窗体上有一个按钮,其右边有一个文本框,单击按钮选择好的文件全名放到文本框中:

  1. import tkinter as tk
  2. from tkinter import filedialog
  3. def choose_file():
  4. file_path = filedialog.askopenfilename() #文件的全名(包括路径、文件名和文件扩展名)
  5. entry.delete(0, tk.END) # 清空文本框
  6. entry.insert(0, file_path) # 将选择的文件路径插入文本框
  7. # 创建窗口
  8. window = tk.Tk()
  9. window.geometry("500x200") # 设置宽度为500像素,高度为200像素
  10. window.title("文件选择示例")
  11. # 创建按钮
  12. button = tk.Button(window, text="选择文件", command=choose_file)
  13. button.pack(side=tk.LEFT)
  14. # 创建文本框
  15. entry = tk.Entry(window, width=50)
  16. entry.pack(side=tk.LEFT)

在这个示例中,我们创建了一个窗口,放置了一个按钮和一个文本框。单击按钮会触发choose_file函数,该函数使用filedialog.askopenfilename()来选择文件,并将选择的文件路径放入文本框中。运行效果:

☆ 修改上面例子,获得文件名(不含路径):

  1. import tkinter as tk
  2. from tkinter import filedialog
  3. import os
  4. def choose_file():
  5. file_path = filedialog.askopenfilename()
  6. filename = os.path.basename(file_path) # 获取文件名
  7. entry.delete(0, tk.END) # 清空文本框
  8. entry.insert(0, filename) # 将文件名插入文本框
  9. # 创建窗口
  10. window = tk.Tk()
  11. window.geometry("500x200") # 设置宽度为500像素,高度为200像素
  12. window.title("文件选择示例:获取文件名")
  13. # 创建按钮
  14. button = tk.Button(window, text="选择文件", command=choose_file)
  15. button.pack(side=tk.LEFT)
  16. # 创建文本框
  17. entry = tk.Entry(window, width=50)
  18. entry.pack(side=tk.LEFT)
  19. # 运行窗口
  20. window.mainloop()

示例中,使用os.path.basename()函数获取了文件的文件名,并将其放入文本框中。这样就可以实现仅获取文件名(不包含路径)的功能。

os.path模块是Python标准库的一部分,已经随着Python的安装而包含在内。os.path模块提供了许多用于处理文件路径的方法,包括获取文件名、扩展名、目录名等功能。因此,在使用Python时,你可以直接引入os.path模块,而无需额外安装。https://docs.python.org/zh-cn/3/library/os.path.html#module-os.path 

假设文件全名file_path = "d:/your/file.txt"

os.path.basename()函数来获取文件名:file_name = os.path.basename(file_path)  # 获取文件名

os.path.splitext()函数来获取文件扩展名:file_extension = os.path.splitext(file_path)[1]  # 获取文件扩展名

先使用os.path.basename()函数获取文件名,然后再使用os.path.splitext()函数获取文件扩展名:file_name_without_extension = os.path.splitext(os.path.basename(file_path))[0]  # 获取不带扩展名的文件名

★获取选取文件的路径

窗体上有一个按钮,其右边有一个文本框,单击按钮选择好的文件的路径(不含文件名)放到文本框中:

  1. import tkinter as tk
  2. from tkinter import filedialog
  3. import os
  4. def choose_file():
  5. file_path = filedialog.askopenfilename()
  6. directory = os.path.dirname(file_path) # 获取文件的目录路径
  7. entry.delete(0, tk.END) # 清空文本框
  8. entry.insert(0, directory) # 将文件的目录路径插入文本框
  9. # 创建窗口
  10. window = tk.Tk()
  11. window.title("获取选取文件的路径")
  12. # 创建按钮
  13. button = tk.Button(window, text="选择文件", command=choose_file)
  14. button.pack(side=tk.LEFT)
  15. # 创建文本框
  16. entry = tk.Entry(window, width=50)
  17. window.geometry("500x200") # 设置宽度为500像素,高度为200像素
  18. entry.pack(side=tk.LEFT)
  19. # 运行窗口
  20. window.mainloop()

示例中,使用os.path.dirname()函数获取了文件的目录路径,并将其放入文本框中。这样就可以实现获取文件路径不包含文件名的功能。

附录

关于计算机windows操作系统中的目录、文件夹 、路径更多情况可见https://blog.csdn.net/cnds123/article/details/105169800

python文件或文件夹操作https://blog.csdn.net/cnds123/article/details/123583020

Python 的Tkinter包系列之四:对话框https://blog.csdn.net/cnds123/article/details/127392512

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜