>>> 【 上节回顾:三种几何布局管理器Pack、Place和Grid的详细用法 】<<<
Python Tkinter教程(四)
这篇博客将详细介绍 tkinter 模块的子模块,如消息框子模块(messagebox)、颜色选择器子模块(colorchooser)以及文件对话框子模块(filedialog)
目录
一、messagebox 子模块
一般用法
【showinfo】
【showwarning】
【showerror】
【askquestion】
【askokcancel】
【askyesno】
【askyesnocancel】
【askretrycancel】
高级操作
二、colorchooser 子模块
代码示例
效果展示
三、filedialog 子模块
【askopenfilename】
【asksaveasfilename】
【askopenfilenames】
【askopenfile】
【askopenfiles】
【asksaveasfile】
【askdirectory】
一、messagebox 子模块 一般用法 messagebox 子模块的一般作用就是产生一个消息框,提供的消息框种类有 8 个,下面将一个一个介绍
【showinfo】showinfo(title=None , message=None , **options)
信息提示消息框
【title】弹窗的标题
【message】字符串,要显示的信息
【options】其他选项,具体见高级操作
【返回值】字符串对象
【提示音】信息提示音
代码示例
import tkinter.messagebox
return_value = tkinter.messagebox.showinfo('温馨提示' , '您还没有给我点赞哦!\n记得点赞,不要忘记啦!' )
print (type (return_value), return_value)
效果展示
showinfo
【showwarning】showwarning(title=None , message=None , **options)
警告提示消息框
【title】弹窗的标题
【message】字符串,要显示的信息
【options】其他选项,具体见高级操作
【返回值】字符串对象
【提示音】信息提示音
代码示例
import tkinter.messagebox
return_value = tkinter.messagebox.showwarning('严重警告' , '如果你还不给我点赞,你的电脑将收到病毒攻击!' )
print (type (return_value), return_value)
效果展示
showwarning
【showerror】showerror(title=None , message=None , **options)
错误提示消息框
【title】弹窗的标题
【message】字符串,要显示的信息
【options】其他选项,具体见高级操作
【返回值】字符串对象
【提示音】错误提示音
代码示例
import tkinter.messagebox
return_value = tkinter.messagebox.showerror('系统错误' , '系统正在受到未知来源的病毒攻击!\n(ERROR_3X007)' )
print (type (return_value), return_value)
效果展示
showerror
【askquestion】askquestion(title=None , message=None , **options)
一般询问消息框
【title】弹窗的标题
【message】字符串,要显示的信息
【options】其他选项,具体见高级操作
【返回值】字符串对象
【提示音】无
特别的,这个窗口无法点击关闭按钮,只能点击“是(Y)”或者“否(N)”
与 askyesno 的区别在于,该返回值为 str,而 askyesno 为 bool
代码示例
import tkinter.messagebox
return_value = tkinter.messagebox.askquestion('是否点赞' , '您要给我点赞是吗?' )
print (type (return_value), return_value)
效果展示
askquestion
【askokcancel】askokcancel(title=None , message=None , **options)
“确定取消”询问消息框
【title】弹窗的标题
【message】字符串,要显示的信息
【options】其他选项,具体见高级操作
【返回值】布尔值
【提示音】无
代码示例
import tkinter.messagebox
return_value = tkinter.messagebox.askokcancel('点赞确认' , '是否给这篇博客点赞?' )
print (type (return_value), return_value)
效果展示
askokcancel
【askyesno】askyesno(title=None , message=None , **options)
“是否”询问消息框
【title】弹窗的标题
【message】字符串,要显示的信息
【options】其他选项,具体见高级操作
【返回值】布尔值
【提示音】无
特别的,这个窗口无法点击关闭按钮,只能点击“是(Y)”或者“否(N)”
代码示例
import tkinter.messagebox
return_value = tkinter.messagebox.askyesno('收藏确认' , '是否收藏这篇博客?' )
print (type (return_value), return_value)
效果展示
askyesno
【askyesnocancel】askyesnocancel(title=None , message=None , **options)
“是否取消”询问消息框
【title】弹窗的标题
【message】字符串,要显示的信息
【options】其他选项,具体见高级操作
【返回值】布尔值或者 None
【提示音】无
代码示例
import tkinter.messagebox
return_value = tkinter.messagebox.askyesnocancel('支持' , '是否点赞并收藏这篇博客?' )
print (type (return_value), return_value)
效果展示
askyesnocancel
【askretrycancel】askretrycancel(title=None , message=None , **options)
“重试取消”询问消息框
【title】弹窗的标题
【message】字符串,要显示的信息
【options】其他选项,具体见高级操作
【返回值】布尔值
【提示音】信息提示音
代码示例
import tkinter.messagebox
return_value = tkinter.messagebox.askretrycancel('提示' , '运气不佳,白嫖失败!' )
print (type (return_value), return_value)
效果展示
askretrycancel
高级操作 高级操作呢,一般人是不知道的,只有看了子模块 messagebox 源代码的人才知道,为什么这么说呢,下面我们看看部分源代码就知道了
ABORTRETRYIGNORE = "abortretryignore"
RETRYCANCEL = "retrycancel"
YESNOCANCEL = "yesnocancel"
上面这段说明(不含中文翻译)是子模块 messagebox 的模块文档说明(很重要 ),我们发现啊,除了我们可以直接看到的 title 参数和 message 参数外,其实还有其他参数的,只不过它们被用 **options 给代替了,导致我们不知道还有什么参数(可能是因为一般不用修改这些参数,它们只需要采用默认值就行了叭)
(作者 Fredrik Lundh 在1997年就写出了这么牛逼轰轰的代码,膜拜啊 ~ 膜拜啊 ~ orz)
代码示例
import tkinter.messagebox
return_value = tkinter.messagebox.askyesnocancel('程序错误' , '您可以选择终止程序的运行\n或者重新尝试运行\n或者忽略错误继续运行' ,
default=tkinter.messagebox.ABORT,
icon=tkinter.messagebox.ERROR,
type =tkinter.messagebox.ABORTRETRYIGNORE)
效果展示
高级操作
还有其他的大家也可以积极尝试呀!
二、colorchooser 子模块 你们知道颜色选择器是什么东东嘛?打开 Word 文档,随便输入什么东西,然后选中输入的文本,修改其颜色时,可以看到有个“其他颜色”的按钮,点一下,就会弹出来一个弹窗,而这个弹窗就是 Word 的颜色选择器,它可以得到 RGB 码中的任意一种颜色
而 tkinter 模块也有一个内置的颜色选择器,功能和别的颜色选择器差不多,但是样子稍有不同
askcolor(color: str | bytes | None = ...,
initialcolor: _Color = ...,
【color】同下面的 initialcolor
【initialcolor】初始颜色,格式为含有 3 个范围在 0~255 整数的元组
【parent】颜色对话框的父窗口(颜色对话框将显示在其上面)
【title】对话框的标题
【返回值】一个元组,格式: (颜色元组, RGB码)
代码示例import tkinter.colorchooser
print (tkinter.colorchooser.askcolor())
效果展示
colorchooser
下面给出一张对比图(Word 的颜色选择器)
Word 文档的颜色选择器
其实他俩差不了多少
三、filedialog 子模块 我们平时打开文件啊、保存文件等,都会有一个弹窗弹出来,让我们选择打开的文件或保存路径等,而这些弹窗就是文件对话框,很幸运啊,tkinter 模块的 filedialog 子模块早在 1997 年就有了这些接口(作者还是上文提到的那个“大牛”),让我们来看一看吧
【askopenfilename】defaultextension: str | None = ...,
filetypes: Iterable[tuple [str , str | list [str ] | tuple [str , ...]]] | None = ...,
initialdir: StrOrBytesPath | None = ...,
initialfile: StrOrBytesPath | None = ...,
parent: Misc | 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' , '.*' )],
initialdir='C:/Users/小康/Desktop' )
print (type (return_value), return_value)
效果展示
askopenfilename
【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 = ...,
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' ])],
initialdir='C:/Users/小康/Desktop' ,
print (type (return_value), return_value)
效果展示
asksaveasfilename
【askopenfilenames】defaultextension: str | None = ...,
filetypes: Iterable[tuple [str , str | list [str ] | tuple [str , ...]]] | None = ...,
initialdir: StrOrBytesPath | None = ...,
initialfile: StrOrBytesPath | None = ...,
parent: Misc | 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' , '.*' )],
print (type (return_value), return_value)
效果展示
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 = ...,
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 = ...,
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 = ...,
typevariable: StringVar | str | None = ...)
文件另存为
【mode】文件打开模式(同 open 函数的 mode 参数)
【confirmoverwrite】是否覆盖重名(原)文件(默认为True,即“已存在”会询问是否覆盖)
【defaultextension】默认扩展名(如果没有写扩展名)
【filetypes】文件类型选项(可迭代对象)
格式:[(文件说明, 文件扩展名)] 或者 [(文件说明, [文件扩展名1, 文件扩展名2, ...])]
【initialdir】初始目录
【initailfile】初始文件名(可加扩展名,也可不加,不加则使用默认扩展名)
【parent】父窗口(弹窗会显示在父窗口上面,也可以空着为默认值,则直接弹出)
【title】窗口标题
【typevariable】类型变量
【返回值】文件 IO 对象
代码示例与效果展示类似于上面的 asksaveasfilename
【askdirectory】initialdir: StrOrBytesPath | None = ...,
mustexist: bool | None = ...,
parent: Misc | None = ...,
选择文件夹
【initialdir】初始目录
【mustexist】是否必须为现有目录
【parent】父窗口(弹窗会显示在父窗口上面,也可以空着为默认值,则直接弹出)
【title】窗口标题
【返回值】字符串对象(文件夹路径)
代码示例
import tkinter.filedialog
return_value = tkinter.filedialog.askdirectory()
print (type (return_value), return_value)
效果展示
askdirectory
>>> 【 下节内容:更新中 ... ... 】<<<