鱼c笔记——Python 的 GUI 编程(十七):Tkinter 的标准对话框模块 messagebox 、filedialog 和 colorchooser

Tkinter 为我们提供了三种标准对话框模块,他们分别是:messagebox、filedialog 和 colorchooser


注:这三个模块原来是独立的,分别是 tkMessageBox、tkFileDialog 和 tkColorChooser,需要导入才能使用。在 Python3 之后,这些模块全部被归纳到 Tkinter 模块的麾下。

目录

Messagebox(消息对话框)

函数参数

函数返回值

filedialog(文件对话框)

函数参数

函数返回值

colorchooser(颜色对话框)

函数参数

函数返回值

FAQ


Messagebox(消息对话框)

下文为你列出了使用 messagebox 可以创建的所有标准对话框样式:

from tkinter import messagebox
#import tkinter.messagebox
from tkinter import *

print(messagebox.askokcancel('messagebox', 'Demo one'))
#有返回值,点‘确定’返回True,点‘取消’返回False。后序可以有对返回值的操作进行下一步

mainloop()

 

使用函数和对话框样式

   
askokcancel(item, message, options) 鱼c笔记——Python 的 GUI 编程(十七):Tkinter 的标准对话框模块 messagebox 、filedialog 和 colorchooser_第1张图片
askquestion(title, message, options) 鱼c笔记——Python 的 GUI 编程(十七):Tkinter 的标准对话框模块 messagebox 、filedialog 和 colorchooser_第2张图片
askretrycancel(title, message, options) 鱼c笔记——Python 的 GUI 编程(十七):Tkinter 的标准对话框模块 messagebox 、filedialog 和 colorchooser_第3张图片
askyesno(title, message, options) 鱼c笔记——Python 的 GUI 编程(十七):Tkinter 的标准对话框模块 messagebox 、filedialog 和 colorchooser_第4张图片
showerror(title, message, options) 鱼c笔记——Python 的 GUI 编程(十七):Tkinter 的标准对话框模块 messagebox 、filedialog 和 colorchooser_第5张图片
showinfo(title, message, options) 鱼c笔记——Python 的 GUI 编程(十七):Tkinter 的标准对话框模块 messagebox 、filedialog 和 colorchooser_第6张图片
showwarning(title, message, options) 鱼c笔记——Python 的 GUI 编程(十七):Tkinter 的标准对话框模块 messagebox 、filedialog 和 colorchooser_第7张图片

 

函数参数

所有的这些函数都有相同的参数:

title参数设置标题栏的文本
message参数设置对话框的主要内容,可以使用'\n'来进行换行
options参数可以设置的选项和含义如下表

 

options参数选项 含义
default

--设置默认的按钮(也就是按下回车响应的那个按钮)

--默认是第一个按钮(像‘确定’,‘是’或‘重试’)

--可以设置的值根据对话框的不同可以进行选择:CANCEL、IGNORE、OK、NO、RETRY或YES

icon

--指定对话框显示的图标

--可以指定的值有:ERROR、INFO、QUESTION或WARNING

--注意:不能自己指定自己的图标(不可自定义图标)

parent

--如果不指定该选项,那么对话框默认显示在根窗口上

--如果想要讲对话框显示在子窗口w上,那么可以设置parent=w

 

函数返回值

askokcancel()、askretrycancel() 和 askyesno() 返回布尔类型的值:

--返回 True 表示用户点击了 ‘确定’ 或 ‘是’ 按钮

--返回 False 表示用户点击了 ‘取消’ 或 ‘否’ 按钮

askquestion() 返回 ‘yes’ 或 ‘no’ 字符串表示用户点击了 ‘是’ 或 ‘否’ 按钮

showerror()、showinfo() 和 showwarning() 返回 ‘ok’ 表示用户按下了 ‘是’ 按钮

 

filedialog(文件对话框)

当你的应用程序需要使用打开文件或保存文件的功能时,文件对话框显得尤为重要。emmm,印象里Java好像也有个组件还是函数可以几行实现。

#from tkinter import filedialog
import tkinter.filedialog
from tkinter import *

root = Tk()

def callback():
    fileName = filedialog.askopenfilename()
    print(fileName)

Button(root, text='打开文件', command=callback).pack()

mainloop()

filedialog 模块提供了两个函数:askopenfilename(**options) 和 asksaveasfilename(**options),分别用于打开文件和保存文件。

 

函数参数

两个函数可供设置的选项是一样的,下面列举了可用选项及含义:

可用选项 含义

defaultextension

--指定文件的后缀

--例如:defaultextension='.jpg',那么当用户输入一个文件名'Python'的时候,文件名会自动添加后缀为'Python.jpg'

--注意:如果用户输入文件名包含后缀,那么该选项不生效

filetypes

--指定筛选文件类型的下拉菜单选项

--该选项的值是由二元组构成的列表

--每个二元组是由(类型名,后缀)构成,例如:filetypes=[('PNG', '.png'), ('JPG', '.jpg'), ('GIF', '.gif')]

initialdir

--指定打开保存文件的默认路径

--默认路径是当前文件夹

parent

--如果不指定该选项,那么对话框默认显示在根窗口上

--如果想要将对话框显示在子窗口w上,那么可以设置parent=w

title

--指定文件对话框的标题栏文本

 

filetypes图解:

鱼c笔记——Python 的 GUI 编程(十七):Tkinter 的标准对话框模块 messagebox 、filedialog 和 colorchooser_第8张图片

 

函数返回值

1.如果用户选择了一个文件,那么返回值是该文件的完整路径

2.如果用户点击了取消按钮,那么返回值是空字符串

 

colorchooser(颜色对话框)

颜色对话框提供了一个友善的界面让用户选择需要的颜色。

from tkinter import colorchooser
from tkinter import *

root =Tk()

def callback():
    fileName = colorchooser.askcolor()
    print(fileName)

Button(root, text='选择颜色', command=callback).pack()

mainloop()

鱼c笔记——Python 的 GUI 编程(十七):Tkinter 的标准对话框模块 messagebox 、filedialog 和 colorchooser_第9张图片

colorchooser 模块提供了一个函数 askcolor(color, option=value, ...)

 

函数参数

参数 含义
color

--要显示的初始的颜色(下图四个红箭头指的地方)

--默认颜色是浅灰色(light gray)

parent

--如果不指定该选项,那么对话框默认显示在根窗口上

--如果想要将对话框显示在子窗口w上,那么可以设置parent=w

title

--指定颜色选择器标题栏的文本

--默认标题是“颜色”

 

“默认颜色”图解:

鱼c笔记——Python 的 GUI 编程(十七):Tkinter 的标准对话框模块 messagebox 、filedialog 和 colorchooser_第10张图片

 

函数返回值

1. 如果用户点击的 ‘确定’ 按钮,返回值是一个二元组 (triple, color),其中的 triple 是一个三元组 (R, G, B)--其中 R, G, B 的范围是 [0, 255](就是该颜色的 RGB 颜色),第二个参数选中颜色的 16 进制的值

2. 如果用户点击的 ‘取消’ 按钮,返回值是(None, None)

Q&A

可能有人会比较好奇为什么要这样写:

from tkinter import colorchooser
from tkinter import *

其中的 from tkinter import * 难道没有包含 from tkinter import colorchooser 吗?

经过尝试我们会发现,还必须加上 from tkinter import colorchooser 这段代码,否则会报错。

首先我们得对 Python 的 module 和 package 这两个概念有所了解,看 SO 上的这个问题:difference between a Python module and a Python package

简单归纳如下

  • 任何一个 Python 文件都是一个都是一个 module,module 名称是没有 .py 扩展名的那部分。比如说有一个 a.py 的 Python 文件,那么这个文件就是一个 module,module 的名称是 a。我们可以通过 import a 来导入这个 module。
  • package 是很多 module 的集合。可以将 package 看成一个文件夹。将 package 和一个含有很多 .py 文件的文件夹区分开来的标准是 package 还有一个额外的 __init__.py。

鱼c笔记——Python 的 GUI 编程(十七):Tkinter 的标准对话框模块 messagebox 、filedialog 和 colorchooser_第11张图片

可以参考 sof 上的这个提问: whats the diference between from tkinter import * and from tkinter import 'module'

下面是我对第一个链接最高赞的一个简单的概述:

当我们 import package 的时候,只是 import 了 package 的 __init__.py 中的 variables/functions/classes,而没有 import package 包含的 module。

所以如果我们想要使用 module 中的变量、函数、类,就得具体指明是哪个 module。

你可能感兴趣的:(#,Python学习笔记)