Python+tkinter自定义实现文件选择按钮
作者:微小冷
这篇文章主要为大家详细介绍了如何利用Python和tkinter自定义实现简单的文件选择按钮和颜色选择按钮,有需要的小伙伴可以跟随小编一起学习一下
文件对话框按钮
文件交互是GUI编程中经常遇到的需求,比如在装软件的时候,往往会遇到自定义安装路径的选项,这个时候往往有两种路径设置方式,一种是直接在文本框中输入,另一种是点击按钮选择对话框。
这个需求实在是太频繁了,值得专门做一个组件,这个组件有三个要素,分别是输入框、按钮和对话框。其必不可少的参数有下面几类
- 布局类:组件高度;Entry和Button的宽度
- 对话框类型:文件夹对话框还是文件对话框
- 标签和值,即Button需要有标签,Entry需要有个值
方便起见,其他参数都被封装在四个字典中,分别对应主控件、按钮、输入框以及对话框的其他参数。
tkinter.filedialog中共提供了7中对话框,其中四种的返回值是字符串,列表如下
对话框 | 说明 |
---|---|
askopenfilename | 文件选择对话框 |
askopenfilenames | 多文件选择对话框 |
asksaveasfilename | 文件保存对话框 |
askdirectory | 文件夹选择对话框 |
故而需要为其创建一个字典,以求参数一一对应。
代码实现
最后得到程序如下
import tkinter as tk import tkinter.ttk as ttk from tkinter.filedialog import (askopenfilename, askopenfilenames, askdirectory, asksaveasfilename) from tkinter.colorchooser import askcolor class DialogButton(ttk.Frame): def __init__(self, master, height, widthL, widthR, label, logtype, text=None, frmDct={}, btnDct={}, enyDct={}, logDct={}): w = widthL + widthR super().__init__(master, height=height, width = w, **frmDct) self.pack() self.text = tk.StringVar() if not text else text ttk.Button(self, width=widthR, text=label, command = self.Click, **btnDct).pack(side=tk.RIGHT) ttk.Entry(self, width=widthL, textvariable=self.text, **enyDct).pack(fill=tk.X, expand=True, padx=5) self.logtype = logtype self.logDct = logDct def Click(self): typeDct = { "文件" : askopenfilename, "文件夹" : askdirectory, "多文件" : askopenfilenames, "保存文件" : asksaveasfilename, "颜色" : askcolor, } text = typeDct[self.logtype](**self.logDct) self.text.set(text) def get(self): return self.text.get() if __name__ == "__main__": root = tk.Tk() DialogButton(root, 10, 50, 10, "选择文件夹", "文件夹") root.mainloop()
效果如下
颜色对话框
在上面的代码中出现了两行奇怪的内容,即对askcolor对话框的引入和使用。这是tkinter中提供的颜色对话框,可以自由选择颜色,非常便捷。得益于函数式的便利性,只需两行代码,就可以为这个组件添加一个颜色对话框,效果如下
到此这篇关于Python+tkinter自定义实现文件选择按钮的文章就介绍到这了,更多相关python tkinter自定义组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!