为什么会需要实现这一个功能呢?
因为在我的日常工作中,python通常是作为一个快速的脚本来自动化一些任务的执行,但是有些任务需要的输入文件可能是不一样的,而每次去修改代码中的D:/xxxx
就很头疼,所以我们想给脚本增加一个基本的选择文件的功能。
文件选择窗口就需要使用Python的GUI库,常用的GUI库有Tkinter,wxPython,PyQT。
这三个库的特点分别是:
Tkinter是标准GUI库,适合小型的GUI程序编写,也特别适合初学者。
wxPython比较流行,适合大型应用程序开发,功能比Tkinter强大,整体设计类似MFC。
PyQT是开源的GUI库,是Qt工具包标准的Python实现,适合大型的GUI程序开发,可以使用Qt Desginer界面设计器快速开发GUI应用程序。
我们首先来看下如何使用Tkinter来实现我们的功能需求。
代码
先来看看全部的实现代码以及运行效果,
1 | import tkinter as tk |
执行效果:
代码分析
创建tkinter的GUI程序,需要:
导入tkinter模块
1
2import tkinter as tk
from tkinter import filedialog创建主窗口对象
1
root = tk.Tk()
添加控件,以及事件处理和布局
1
2
3
4
5tk.Label(root, text="文件路径:").grid(column=0, row=0, rowspan=3)
tk.Entry(root, textvariable = select_path).grid(column=1, row=0, rowspan=3)
tk.Button(root, text="选择单个文件", command=select_file).grid(row=0, column=2)
tk.Button(root, text="选择多个文件", command=select_files).grid(row=1, column=2)
tk.Button(root, text="选择文件夹", command=select_folder).grid(row=2, column=2)进入事件循环
1
root.mainloop()
脚本中插入GUI
在一端可执行脚本中通过插入GUI来提高脚本的友好性和可适配性,则需要在通过GUI操作后关闭窗口,并继续执行,这种情况下,可以通过如下代码,关闭事件循环,但并不会退出整个程序。
1 | root.destroy() |
文件选择功能
在代码一节,我们通过command
参数实现按钮的功能与文件参数的获取,这里不再赘述。