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开发电脑定时关机工具

    基于Python开发电脑定时关机工具

    这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-01-01
  • 快速进修Python指南之控制if-else循环技巧

    快速进修Python指南之控制if-else循环技巧

    这篇文章主要为大家介绍了Java开发者的Python快速进修指南之控制之if-else和循环技巧示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • python3.4实现邮件发送功能

    python3.4实现邮件发送功能

    这篇文章主要为大家详细介绍了python3.4实现邮件发送功能,含带中文附件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Python循环语句之break与continue的用法

    Python循环语句之break与continue的用法

    这篇文章主要介绍了Python循环语句之break与continue的用法,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • python爬虫基础之简易网页搜集器

    python爬虫基础之简易网页搜集器

    这篇文章主要介绍了python爬虫基础之简易网页搜集器,文中有非常详细的代码示例,对正在学习python爬虫的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • python常见的格式化输出小结

    python常见的格式化输出小结

    今天在写代码的时候,需要统一化输出格式进行,一时想不起竟具体细节,用了最笨的方法,所以觉得有必要将常见的方法进行一个总结。下面这篇文中就给大家总结了python中常见的格式化输出,比如打印字符串、打印整数和打印浮点数等,下面来看看详细的输出方法吧。
    2016-12-12
  • Python中如何避免默认参数的陷阱

    Python中如何避免默认参数的陷阱

    在 Python 中,我们经常会使用函数的默认参数来简化代码,但你知道吗默认参数的行为有时可能会导致一些难以察觉的错误,下面小编就为大家介绍一下如何避免这样的错误吧
    2025-01-01
  • Python的Flask框架中实现登录用户的个人资料和头像的教程

    Python的Flask框架中实现登录用户的个人资料和头像的教程

    这篇文章主要介绍了Python的Flask框架中实现登录用户的个人资料和头像的教程,这也是各个web框架的最基本功能之一,需要的朋友可以参考下
    2015-04-04
  • 一分钟带你掌握Python中pip的安装与使用方法

    一分钟带你掌握Python中pip的安装与使用方法

    pip是什么?它是Python包管理工具,这个工具提供了对Python 包的查找、下载、安装和卸载的功能,这篇文章主要介绍了pip的安装与使用方法
    2021-08-08
  • python读取eml文件并用正则表达式匹配邮箱的代码

    python读取eml文件并用正则表达式匹配邮箱的代码

    今天接到一个需求有一个同事离职了,但是留下了非常多的邮件,我需要将他的邮件进行分类,只要邮件中以@xxx.com结尾的存放在文件夹中,否则放在另一个文件夹中,这篇文章主要介绍了python读取eml文件并用正则匹配邮箱,需要的朋友可以参考下
    2022-11-11

最新评论