Python Tkinter 教程(四)—— 子模块 messagebox、colorchooser 以及 filedialog 的使用及技巧(万字详解)(下)

简介: Python Tkinter 教程(四)—— 子模块 messagebox、colorchooser 以及 filedialog 的使用及技巧(万字详解)(下)

二、colorchooser 子模块

  你们知道颜色选择器是什么东东嘛?打开 Word 文档,随便输入什么东西,然后选中输入的文本,修改其颜色时,可以看到有个“其他颜色”的按钮,点一下,就会弹出来一个弹窗,而这个弹窗就是 Word 的颜色选择器,它可以得到 RGB 码中的任意一种颜色


       而 tkinter 模块也有一个内置的颜色选择器,功能和别的颜色选择器差不多,但是样子稍有不同

askcolor(color: str | bytes | None = ..., 
         *, 
         initialcolor: _Color = ..., 
         parent: Misc = ..., 
         title: str = ...)

【color】同下面的 initialcolor


【initialcolor】初始颜色,格式为含有 3 个范围在 0~255 整数的元组


【parent】颜色对话框的父窗口(颜色对话框将显示在其上面)


【title】对话框的标题


【返回值】一个元组,格式: (颜色元组, RGB码)

代码示例

import tkinter.colorchooser
print(tkinter.colorchooser.askcolor())
# (None, None) 点击取消或关闭
# ((0, 0, 0), '#000000') 格式: (颜色元组, RGB码)

效果展示

colorchooser

下面给出一张对比图(Word 的颜色选择器)

Word 文档的颜色选其实他俩差不了多少

三、filedialog 子模块择器

 我们平时打开文件啊、保存文件等,都会有一个弹窗弹出来,让我们选择打开的文件或保存路径等,而这些弹窗就是文件对话框,很幸运啊,tkinter 模块的 filedialog 子模块早在 1997 年就有了这些接口(作者还是上文提到的那个“大牛”),让我们来看一看吧

【askopenfilename】

askopenfilename(*, 
                defaultextension: str | None = ..., 
                filetypes: Iterable[tuple[str, str | list[str] | tuple[str, ...]]] | None = ...,
                initialdir: StrOrBytesPath | None = ..., 
                initialfile: StrOrBytesPath | None = ..., 
                parent: Misc | None = ..., 
                title: str | None = ..., 
                typevariable: StringVar | str | None = ...)

文件打开


【defaultextension】默认扩展名(如果没有写扩展名)


【filetypes】文件类型选项(可迭代对象)


格式:[(文件说明, 文件扩展名)] 或者 [(文件说明, [文件扩展名1, 文件扩展名2, ...])]


【initialdir】初始目录


【initailfile】初始文件名(可加扩展名,也可不加,不加则使用默认扩展名)


【parent】父窗口(弹窗会显示在父窗口上面,也可以空着为默认值,则直接弹出)


【title】窗口标题


【typevariable】类型变量


【返回值】字符串对象(文件路径)  

代码示例

import tkinter.filedialog
return_value = tkinter.filedialog.askopenfilename(filetypes=[('All Files', '.*')], 
                                                  title='打开文件', 
                                                  initialfile='Python.py', 
                                                  initialdir='C:/Users/小康/Desktop')
print(type(return_value), return_value)
# <class 'str'> C:/Users/小康/Desktop/示例文件.txt (选中 示例文件.txt)

效果展示

askopenfilename

【asksaveasfilename】

asksaveasfilename(*, 
                  confirmoverwrite: bool | None = ..., 
                  defaultextension: str | None = ..., 
                  filetypes: Iterable[tuple[str, str | list[str] | tuple[str, ...]]] | None = ...,
                  initialdir: StrOrBytesPath | None = ..., 
                  initialfile: StrOrBytesPath | None = ..., 
                  parent: Misc | None = ..., 
                  title: str | None = ..., 
                  typevariable: StringVar | str | None = ...)

文件另存为


【confirmoverwrite】是否覆盖重名(原)文件(默认为True,即“已存在”会询问是否覆盖)


【defaultextension】默认扩展名(如果没有写扩展名)


【filetypes】文件类型选项(可迭代对象)


格式:[(文件说明, 文件扩展名)] 或者 [(文件说明, [文件扩展名1, 文件扩展名2, ...])]


【initialdir】初始目录


【initailfile】初始文件名(可加扩展名,也可不加,不加则使用默认扩展名)


【parent】父窗口(弹窗会显示在父窗口上面,也可以空着为默认值,则直接弹出)


【title】窗口标题


【typevariable】类型变量


【返回值】字符串对象(文件路径)  

代码示例

import tkinter.filedialog
return_value = tkinter.filedialog.asksaveasfilename(filetypes=[('所有文件', ['.py', '.txt'])],
                                                    title='另存为文件',
                                                    initialdir='C:/Users/小康/Desktop',
                                                    defaultextension='.txt')
print(type(return_value), return_value)
# <class 'str'> C:/Users/小康/Desktop/hello.txt (输入 hello)

效果展示

asksaveasfilename

【askopenfilenames】

askopenfilenames(*, 
                 defaultextension: str | None = ..., 
                 filetypes: Iterable[tuple[str, str | list[str] | tuple[str, ...]]] | None = ...,
                 initialdir: StrOrBytesPath | None = ..., 
                 initialfile: StrOrBytesPath | None = ..., 
                 parent: Misc | None = ..., 
                 title: str | None = ..., 
                 typevariable: StringVar | str | None = ...)

多个文件打开


【defaultextension】默认扩展名(如果没有写扩展名)


【filetypes】文件类型选项(可迭代对象)


格式:[(文件说明, 文件扩展名)] 或者 [(文件说明, [文件扩展名1, 文件扩展名2, ...])]


【initialdir】初始目录


【initailfile】初始文件名(可加扩展名,也可不加,不加则使用默认扩展名)


【parent】父窗口(弹窗会显示在父窗口上面,也可以空着为默认值,则直接弹出)


【title】窗口标题


【typevariable】类型变量


【返回值】字符串对象(文件路径)  

代码示例

import tkinter.filedialog
return_value = tkinter.filedialog.askopenfilenames(filetypes=[('All Files', '.*')],
                                                   title='打开文件',
                                                   initialfile='Python.py')
print(type(return_value), return_value)
# <class 'tuple'> ('D:/Python 测试/a0.py', 'D:/Python 测试/a1.py', 'D:/Python 测试/a2.py')

效果展示

askopenfilenames

【askopenfile】

askopenfile(mode: str = ..., 
            *, 
            defaultextension: str | None = ..., 
            filetypes: Iterable[tuple[str, str | list[str] | tuple[str, ...]]] | None = ...,
            initialdir: StrOrBytesPath | None = ..., 
            initialfile: StrOrBytesPath | None = ..., 
            parent: Misc | None = ..., 
            title: str | None = ..., 
            typevariable: StringVar | str | None = ...)

文件打开


【mode】文件打开模式(同 open 函数的 mode 参数)


【defaultextension】默认扩展名(如果没有写扩展名)


【filetypes】文件类型选项(可迭代对象)


格式:[(文件说明, 文件扩展名)] 或者 [(文件说明, [文件扩展名1, 文件扩展名2, ...])]


【initialdir】初始目录


【initailfile】初始文件名(可加扩展名,也可不加,不加则使用默认扩展名)


【parent】父窗口(弹窗会显示在父窗口上面,也可以空着为默认值,则直接弹出)


【title】窗口标题


【typevariable】类型变量


【返回值】文件 IO 对象

代码示例与效果展示类似于上面的 askopenfilename

【askopenfiles】

askopenfiles(mode: str = ..., 
             *, 
             defaultextension: str | None = ..., 
             filetypes: Iterable[tuple[str, str | list[str] | tuple[str, ...]]] | None = ...,
             initialdir: StrOrBytesPath | None = ..., 
             initialfile: StrOrBytesPath | None = ..., 
             parent: Misc | None = ..., 
             title: str | None = ..., 
             typevariable: StringVar | str | None = ...)

多个文件打开


【mode】文件打开模式(同 open 函数的 mode 参数)


【defaultextension】默认扩展名(如果没有写扩展名)


【filetypes】文件类型选项(可迭代对象)


格式:[(文件说明, 文件扩展名)] 或者 [(文件说明, [文件扩展名1, 文件扩展名2, ...])]


【initialdir】初始目录


【initailfile】初始文件名(可加扩展名,也可不加,不加则使用默认扩展名)


【parent】父窗口(弹窗会显示在父窗口上面,也可以空着为默认值,则直接弹出)


【title】窗口标题


【typevariable】类型变量


【返回值】元组形式的文件 IO 对象

代码示例与效果展示类似于上面的 askopenfilenames

【asksaveasfile】

asksaveasfile(mode: str = ..., 
              *, 
              confirmoverwrite: bool | None = ..., 
              defaultextension: str | None = ..., 
              filetypes: Iterable[tuple[str, str | list[str] | tuple[str, ...]]] | None = ...,
              initialdir: StrOrBytesPath | None = ..., 
              initialfile: StrOrBytesPath | None = ..., 
              parent: Misc | None = ..., 
              title: str | None = ..., 
              typevariable: StringVar | str | None = ...)

文件另存为


【mode】文件打开模式(同 open 函数的 mode 参数)


【confirmoverwrite】是否覆盖重名(原)文件(默认为True,即“已存在”会询问是否覆盖)


【defaultextension】默认扩展名(如果没有写扩展名)


【filetypes】文件类型选项(可迭代对象)


格式:[(文件说明, 文件扩展名)] 或者 [(文件说明, [文件扩展名1, 文件扩展名2, ...])]


【initialdir】初始目录


【initailfile】初始文件名(可加扩展名,也可不加,不加则使用默认扩展名)


【parent】父窗口(弹窗会显示在父窗口上面,也可以空着为默认值,则直接弹出)


【title】窗口标题


【typevariable】类型变量


【返回值】文件 IO 对象

代码示例与效果展示类似于上面的 asksaveasfilename

【askdirectory】

askdirectory(*, 
             initialdir: StrOrBytesPath | None = ..., 
             mustexist: bool | None = ..., 
             parent: Misc | None = ..., 
             title: str | None = ...)

选择文件夹

【initialdir】初始目录

【mustexist】是否必须为现有目录

【parent】父窗口(弹窗会显示在父窗口上面,也可以空着为默认值,则直接弹出)

【title】窗口标题

【返回值】字符串对象(文件夹路径)

代码示例

import tkinter.filedialog
return_value = tkinter.filedialog.askdirectory()
print(type(return_value), return_value)
# <class 'str'> C:/Users/小康/Desktop

效果展示

目录
相关文章
|
3天前
|
消息中间件 监控 网络协议
Python中的Socket魔法:如何利用socket模块构建强大的网络通信
本文介绍了Python的`socket`模块,讲解了其基本概念、语法和使用方法。通过简单的TCP服务器和客户端示例,展示了如何创建、绑定、监听、接受连接及发送/接收数据。进一步探讨了多用户聊天室的实现,并介绍了非阻塞IO和多路复用技术以提高并发处理能力。最后,讨论了`socket`模块在现代网络编程中的应用及其与其他通信方式的关系。
|
6天前
|
Python
Python 中常用的内置模块之`re`模块
【10月更文挑战第11天】 `re` 模块是 Python 内置的正则表达式处理工具,支持模式匹配、搜索、替换等功能。通过 `search`、`match`、`findall` 和 `sub` 等函数,结合正则表达式的元字符、分组、贪婪模式等特性,可高效完成文本处理任务。示例代码展示了基本用法,帮助快速上手。
9 1
|
6天前
|
JSON 数据格式 Python
Python基础-常用内置模块
【10月更文挑战第11天】 Python 内置模块丰富,涵盖系统交互、时间处理、数学运算、正则表达式、数据序列化等功能,如 `sys`、`os`、`time`、`datetime`、`random`、`math`、`re`、`json`、`pickle` 和 `csv` 等,极大提升了开发效率和代码质量。
8 1
|
10天前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
10天前
|
Python
Python实用记录(四):os模块-去后缀或者改后缀/指定目录下图片或者子目录图片写入txt/csv
本文介绍了如何使用Python的os模块来操作文件,包括更改文件后缀、分割文件路径和后缀、将指定目录下的所有图片写入txt文档,以及将指定目录下所有子目录中的图片写入csv文档,并为每个子目录分配一个标签。
10 1
|
7天前
|
机器学习/深度学习 缓存 Linux
python环境学习:pip介绍,pip 和 conda的区别和联系。哪个更好使用?pip创建虚拟环境并解释venv模块,pip的常用命令,conda的常用命令。
本文介绍了Python的包管理工具pip和环境管理器conda的区别与联系。pip主要用于安装和管理Python包,而conda不仅管理Python包,还能管理其他语言的包,并提供强大的环境管理功能。文章还讨论了pip创建虚拟环境的方法,以及pip和conda的常用命令。作者推荐使用conda安装科学计算和数据分析包,而pip则用于安装无法通过conda获取的包。
24 0
|
11天前
|
Python
Python中tqdm模块的常用方法和示例
`tqdm` 是一个快速、可扩展的Python进度条库,适用于长循环中添加进度提示。通过封装迭代器 `tqdm(iterator)`,可以轻松实现进度显示。支持自定义描述、宽度及嵌套进度条,适用于多种迭代对象。在Jupyter notebook中,可自动调整显示效果。
19 0
|
11天前
|
Python
Python中threading模块的常用方法和示例
Python 的 `threading` 模块提供了多线程编程的能力,允许同时执行多个线程。主要类包括 `Thread`、`Lock` 和 `Condition`。`Thread` 类用于创建和管理线程,`Lock` 用于同步线程,防止资源竞争,`Condition` 用于线程间协调。本文介绍了这些类的常用方法及示例代码,帮助你更好地理解和使用多线程编程。
19 0
|
11天前
|
Shell Python
Python中os模块的常用方法和示例
在Python中,`os`模块提供了与操作系统交互的函数,用于文件和目录管理、路径操作、环境变量等。常用方法包括路径操作(如`os.path.join()`、`os.path.abspath()`)、文件和目录管理(如`os.mkdir()`、`os.remove()`)、环境变量和进程管理(如`os.getenv()`、`os.system()`)以及其他常用功能(如`os.getcwd()`、`os.urandom()`)。
18 0
|
11天前
|
数据安全/隐私保护 Python
python学习十一:python常用模块使用,如 加密模块pyarmor,时间模块time等
这篇文章介绍了Python中两个常用模块的使用:加密模块pyarmor用于保护代码,以及时间模块time用于处理时间相关的功能。
14 0