Python+tkinter自定义实现文件选择按钮

 更新时间:2023年10月18日 09:46:05   作者:微小冷  
这篇文章主要为大家详细介绍了如何利用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自定义组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python相关库设置技巧保护你的C盘

    Python相关库设置技巧保护你的C盘

    这篇文章主要为大家介绍了Python相关库设置,保护你的C盘技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • python 给图像添加透明度(alpha通道)

    python 给图像添加透明度(alpha通道)

    这篇文章主要介绍了python 给图像添加透明度,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • python 使用cx-freeze打包程序的实现

    python 使用cx-freeze打包程序的实现

    这篇文章主要介绍了python 使用cx-freeze打包程序的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • TCP协议用在python和wifi模块之间详解

    TCP协议用在python和wifi模块之间详解

    这篇文章主要介绍了TCP协议用在python和wifi模块之间详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 如何修改numpy array的数据类型

    如何修改numpy array的数据类型

    这篇文章主要介绍了如何修改numpy array的数据类型,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • new_zeros() pytorch版本的转换方式

    new_zeros() pytorch版本的转换方式

    今天小编就为大家分享一篇new_zeros() pytorch版本的转换方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python实现TCP/IP协议下的端口转发及重定向示例

    Python实现TCP/IP协议下的端口转发及重定向示例

    这篇文章主要介绍了Python实现TCP/IP协议下的端口转发及重定向示例,以一个webpy站点在本机的两个端口双向通信下演示,需要的朋友可以参考下
    2016-06-06
  • 用python 批量更改图像尺寸到统一大小的方法

    用python 批量更改图像尺寸到统一大小的方法

    下面小编就为大家分享一篇用python 批量更改图像尺寸到统一大小的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • python用TensorFlow做图像识别的实现

    python用TensorFlow做图像识别的实现

    这篇文章主要介绍了python用TensorFlow做图像识别的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • python中的getter与setter你了解吗

    python中的getter与setter你了解吗

    这篇文章主要为大家详细介绍了python中的getter与setter,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03

最新评论