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函数中return后的语句一定不会执行吗?

    python函数中return后的语句一定不会执行吗?

    这篇文章主要给大家详细分析讲解了关于python函数中return语句后的语句是否一定不会执行的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-07-07
  • Python的GUI框架PySide的安装配置教程

    Python的GUI框架PySide的安装配置教程

    这篇文章主要介绍了Python的GUI框架PySide的安装配置教程,PySide也是用来使用Qt的GUI库,需要的朋友可以参考下
    2016-02-02
  • python文件编译为pyc后运行的实现步骤

    python文件编译为pyc后运行的实现步骤

    本文主要介绍了python文件编译为pyc后运行的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python中SOAP项目的介绍及其在web开发中的应用

    Python中SOAP项目的介绍及其在web开发中的应用

    这篇文章主要介绍了Python中的SOAP项目及其在web开发中的应用,本文来自于IBM官方网站技术文档,需要的朋友可以参考下
    2015-04-04
  • python实战小游戏之考验记忆力

    python实战小游戏之考验记忆力

    本篇文章介绍了用python编写的曾经风靡的考验记忆力的小游戏,详细介绍了整个思路和过程以及代码,通读本篇对大家的学习或工作具有一定的价值,需要的朋友可以参考下
    2021-09-09
  • 使用Python和OpenCV进行图像处理和分析

    使用Python和OpenCV进行图像处理和分析

    图像处理和分析是计算机视觉领域的重要组成部分,本文将介绍如何使用Python编程语言和OpenCV库进行图像处理和分析,我们将涵盖图像读取、显示、滤波、边缘检测和图像分割等常见的图像处理操作,并提供相应的代码示例
    2023-07-07
  • 简单的抓取淘宝图片的Python爬虫

    简单的抓取淘宝图片的Python爬虫

    这篇文章主要介绍了简单的抓取淘宝图片的Python爬虫,方法比较简单,推荐给小伙伴们参考下。
    2014-12-12
  • 使用Python的Twisted框架构建非阻塞下载程序的实例教程

    使用Python的Twisted框架构建非阻塞下载程序的实例教程

    Twisted的异步工作模式使其在非阻塞情况下可以拥有较高的性能,这里我们来看一下使用Python的Twisted框架构建非阻塞下载程序的实例教程,包括服务器端与客户端的实践.
    2016-05-05
  • 详解python里使用正则表达式的分组命名方式

    详解python里使用正则表达式的分组命名方式

    这篇文章主要介绍了详解python里使用正则表达式的分组命名方式的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-10-10
  • Python解析Laravel Cookie技巧示例

    Python解析Laravel Cookie技巧示例

    本文将介绍如何使用Python解析Laravel Cookie,以便在Web开发中处理这些Cookie数据,我们将深入了解Cookie的结构,以及如何在Python中对其进行解析和操作
    2023-12-12

最新评论