tkinter选择文件(夹)的对话框

2019年8月30日 / 358次阅读 / Last Modified 2019年8月30日
tkinter

GUI程序与用户交互,一个重要的方面就是让用户选择文件或文件夹,比如选择要执行某个动作的文件或文件夹,或者要选择一个文件来保存某些内容的时候。Python标准的tkinter.filedialog模块,提供了这类对话框实现的简单接口。

askopenfilename

这个对话框,可以让用户选择一个文件。

>>> import tkinter as tk
>>> root = tk.Tk()
>>> from tkinter.filedialog import (askopenfilename, 
                                    askopenfilenames, 
                                    askdirectory, 
                                    asksaveasfilename)
>>> 
>>> askopenfilename()
'/home/xinlin/repos/sendslip/config.ini'
>>> askopenfilename()
>>> ''
askopenfilename
askopenfilename

上面示例代码,调用askopenfilename没有使用任何参数,选择一个文件,返回此文件路径的字符串,如果不选择,Cancel或直接关闭,返回一个空的字符串(测试时出现过Cancel或直接关闭,返回空tuple)。

askopenfilename函数(本文介绍的其它几个函数一样)还有几个参数可以考虑使用,要采用key=value的方式:

askopenfilename(title='Please choose a file', 
                  initialdir='/', filetypes=[('Python source file','*.py')])
指定参数的askopenfilename
指定参数的askopenfilename

title,窗口名称;initialdir初始路径;filetypes,文件类型。

askopenfilenames

这个对话框,可以让用户同时选择多个文件。

>>> askopenfilenames()
('/home/xinlin/repos/sendslip/config.ini', '/home/xinlin/repos/sendslip/README.md', '/home/xinlin/repos/sendslip/sendslip.py', '/home/xinlin/repos/sendslip/sendslip2.py')
>>> askopenfilenames()
('/home/xinlin/repos/sendslip/sendslip2.py',)
>>> askopenfilenames()
''

打开的对话框样子是一样的,就不再贴图了。

askopenfilenames可以同时选择多个文件(按住Ctrl键多选),返回一个tuple,tuple的每个元素都是一个pathname,如果只选择一个文件,也是返回tuple,里面包含一个元素。如果Cancel或者直接关闭,返回空字符串。

askdirectory

这个对话框,要求用户选择一个文件夹。

>>> askdirectory()
'/home/xinlin/repos/auto10g'
>>> askdirectory()
''
>>> askdirectory()
()
askdirectory
askdirectory

返回选择的文件夹路径,Cancel或直接关闭,返回空串(再次出现了返回空tuple)。

asksaveasfilename

让用户指定一个文件保存数据。

>>> asksaveasfilename()
'/home/xinlin/repos/sendslip/dasdfasd.kkk'
>>> asksaveasfilename()
''
asksaveasfilename
asksaveasfilename

此函数返回一个pathname字符串,如果Cancel或者直接关闭窗口,返回空字符串。返回的文件名如何操作,是其它代码的事情,这个对话框只是返回选择的文件名。

filedialog子模块内还有几个ask...函数,它们会返回已经打开的文件句柄,而不是返回文件的pathname,本人是不建议使用这几个函数的,它们是:askopenfile,askopenfiles,asksaveasfile。这几个函数所在的源文件,有写着 FIXME 这样的注释,也在质疑它们是不是“太方便”了......

以上就是对tkinter.filedialog模块中提供的选择文件或文件夹的对话框的介绍。

-- EOF --

本文链接:https://www.pynote.net/archives/1004

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More

麦新杰的Python笔记

Ctrl+D 收藏本页


©Copyright 麦新杰 Since 2019 Python笔记

go to top