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

效果展示

目录
相关文章
|
1月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
266 7
|
1月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
215 0
|
1月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
292 4
|
1月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
118 1
|
2月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
673 19
|
1月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
225 0
|
1月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
163 0
|
2月前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
116 4
|
2月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
276 0
|
数据可视化 IDE 开发工具
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
951 13

推荐镜像

更多
下一篇
oss云网关配置