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月前
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
14天前
|
机器学习/深度学习 数据采集 数据可视化
Python/Anaconda双方案加持!Jupyter Notebook全平台下载教程来袭
Jupyter Notebook 是一款交互式编程与数据科学分析工具,支持40多种编程语言,广泛应用于机器学习、数据清洗和学术研究。其核心优势包括实时执行代码片段、支持Markdown文档与LaTeX公式混排,并可导出HTML/PDF/幻灯片等格式。本文详细介绍了Jupyter Notebook的软件定位、特性、安装方案(Anaconda集成环境与原生Python+PIP安装)、首次运行配置及常见问题解决方案,帮助用户快速上手并高效使用该工具。
|
19天前
|
SQL 关系型数据库 MySQL
milvus-use教程 python
本项目参考vanna项目,获取数据库元数据和问题SQL对,存入Milvus向量数据库,并进行相似性检索。采用m3e-large嵌入模型,通过DatabaseManager类实现数据库连接持久化,MilvusVectorStore类封装了Milvus操作方法,如创建集合、添加数据和查询。项目提供init_collections、delete_collections等文件用于初始化、删除和管理集合。所用Milvus版本较新,API与vanna项目不兼容。 [项目地址](https://gitee.com/alpbeta/milvus-use)
105 9
|
24天前
|
人工智能 自然语言处理 Shell
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
38 8
|
22天前
|
缓存 Shell 开发工具
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 &quot;hello world!&quot; 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
24 4
|
26天前
|
大数据 开发者 C++
Python语法糖详解教程
《Python语法糖详解教程》介绍了编程语言中的“语法糖”,即通过特殊语法形式简化代码,使代码更简洁、易读和高效。文章详细解析了列表推导式、字典推导式、元组解包、条件表达式、with语句和装饰器等核心语法糖,并提供了具体示例和最佳实践指南。通过这些技巧,开发者可以在保持底层功能不变的前提下,显著提升开发效率和代码质量。
46 8
|
1月前
|
C语言 Python
Python学习:内建属性、内建函数的教程
本文介绍了Python中的内建属性和内建函数。内建属性包括`__init__`、`__new__`、`__class__`等,通过`dir()`函数可以查看类的所有内建属性。内建函数如`range`、`map`、`filter`、`reduce`和`sorted`等,分别用于生成序列、映射操作、过滤操作、累积计算和排序。其中,`reduce`在Python 3中需从`functools`模块导入。示例代码展示了这些特性和函数的具体用法及注意事项。
|
1月前
|
人工智能 自然语言处理 程序员
体验通义灵码的AI程序员:用Python+Tkinter实现表单向config.ini写入与读取
本文介绍了如何利用通义灵码的AI程序员快速开发一个基于Python和Tkinter的表单应用程序,实现对config.ini文件的读写。通过简单的自然语言描述,通义灵码能自动生成代码框架、自动补全功能代码,并提供错误检测与修复建议,极大提高了开发效率。开发者只需安装必要库(如configparser)并配置VSCode插件TONGYI Lingma,即可轻松创建包含多个输入项和按钮的表单界面。运行程序后,用户可以编辑表单并保存数据到config.ini文件中,再次启动时数据会自动加载显示。这一过程展示了AI在编程中的高效性和灵活性,为开发者提供了全新的开发方式。
135 3
|
4月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
181 62
|
4月前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
146 61