文章引入

Tkinter模块是Python中内置的一个强大的GUI库,在GUI界面设计的过程中通常会用到弹窗提醒,或是提示信息确认功能,本次我们一起认识的tkinter模块中的messagebox弹窗库正是为了方便我们完成设计目标,接下来将会讲解其使用方法以及使用技巧。

本教程希望对大家学习Python有一定的帮助,如有问题与纰漏欢迎在评论区留言,我们一起学习一起进步,喜欢的可以点个关注+点赞+关注三连!

模块详解

Tkinter中的弹窗库为tkinter.messagebox。它拥有8种类型的弹窗,其中,有3种信息提醒弹窗,5种确认信息弹窗。
主要区别在于显示内容和效果的不同,且确认信息弹窗可以用来绑定对应返回结果触发不同事件。现在,让我们一起开始学习tkinter弹窗库吧!!

模块导入

在较新的Python的tkinter库中,弹窗模块需要单独导入,直接使用会引起程序报错。

import tkinter as tk  # 导入tkinter模块。为了方便后续讲解,命名为 tk。
import tkinter.messagebox  # 引入弹窗库,防止解释器弹出报错。

基础定义

本处我们将开始绘制一个简单的tkinter窗口,并且简单声明部分组件用于我们后续的触发弹出窗口执行以及展示。

window =tk.Tk()  # 生成主窗口,命名 window
window.title('Test Window')  # 定义主窗口标题
window.geometry('300x200')  # 定义主窗口的长宽

def display_messagebox(): # 定义一个响应函数,目前内容为空
	pass
	
tk.Button(window,text='click me',command=display_messagebox).pack()  # 定义一个按钮,用来后续触发弹窗,为了方便直接pack()吧。

window.mainloop() # 主窗口循环运行

现在,一个简单的窗口已经定义好啦!
在这里插入图片描述
现在,我们开始讲解弹窗吧!正片开始!

类型弹窗:信息提醒弹窗(3种)

本处我们将介绍tkinter库里3种的信息提醒弹窗。分别为showinfo,showerror,showwarning三种。接下来分别让我们看一看吧!

为了方便大家直观了解学习体验,本处将续上先前定义好的窗口基础定义,并写上新的代码。

第一种:showinfo 信息提醒弹窗

代码片

window =tk.Tk() 
window.title('Test Window') 
window.geometry('300x200') 

def display_messagebox(): 
	tk.messagebox.showinfo(title='display_messagebox',
		message='This is a showinfo_messagebox')  # 消息提醒弹窗,点击确定返回值为 ok
	
tk.Button(window,text='click me',command=display_messagebox).pack()

window.mainloop() 

至此,一个showinfo消息提醒弹窗定义完成,当点击确定时,程序返回值为“ok”。

巧记:弹窗命名通常较为复杂,但如果将其名称分割开,就很好理解其设计师命名与其所设想弹窗的主要作用含义了。因为,真正的文艺男都跑去学理工了(bu shi)
例如:本类型名称为showinfo弹窗,那么可以将其名称看作成英文show info ==> 显示信息。这样就可以将其理解成用来 显示程序运行信息 弹窗。

点击:确定,返回 ok

第二种:showerror 信息错误弹窗

代码片

window =tk.Tk() 
window.title('Test Window') 
window.geometry('300x200') 

def display_messagebox(): 
	tk.messagebox.showerror(title='display_messagebox',
		message='This is a showerror_messagebox')  # 信息错误弹窗,点击确定返回值为 ok
	
tk.Button(window,text='click me',command=display_messagebox).pack()  

window.mainloop() 

至此,一个showerror信息错误弹窗定义完成,当点击确定时,程序返回值为“ok”。

巧记:同上理解,本类型名称为showerror弹窗,那么可以将其名称看作成英文show error==> 显示错误。这样就可以将其理解成用来 显示程序运行错误 弹窗。

点击:确定,返回 ok

第三种:showwarning 信息警告弹窗

代码片

window =tk.Tk()  
window.title('Test Window') 
window.geometry('300x200')  

def display_messagebox(): 
	tk.messagebox.showwarning(title='display_messagebox',
		message='This is a showwarning_messagebox')  # 信息警告弹窗,点击确定返回值为 ok
	
tk.Button(window,text='click me',command=display_messagebox).pack() 

window.mainloop() 

至此,一个showwarning信息警告弹窗定义完成,当点击确定时,程序返回值为“ok”。

巧记:同上理解,本类型名称为showwarning弹窗,那么可以将其名称看作成英文show warning==> 显示警告。这样就可以将其理解成用来 显示程序运行警告 弹窗。

点击:确定,返回 ok

三种提示弹窗已经讲完了,前面三种弹窗虽然各有个的显示方式,但是他们都有一个特点:选项只有一个,且返回值均为“ok”!
现在,我们来讲一下确认信息弹窗,看看与前者3个有什么区别呢?

类型弹窗:确认信息弹窗(5种)

本处我们将介绍tkinter库里5种的确认信息弹窗,与前面的弹窗内容不同,本处的弹窗内容主要询问用户是否执行下一步,对此,我们可以绑定对应选项的返回值进行内容下一步执行。接下来分别让我们看一看吧!

为了方便大家直观了解学习体验,本处将续上先前定义好的窗口基础定义,并写上新的代码。

第一种:是T/否F 确认弹窗

代码片

window =tk.Tk() 
window.title('Test Window')  
window.geometry('300x200')  

def display_messagebox(): 
	tk.messagebox.askyesno(title='display_messagebox',
		message='This is a askyesno_messagebox')  # 信息确认弹窗 是 Ture或 否 False
	
tk.Button(window,text='click me',command=display_messagebox).pack() 

window.mainloop() 

至此,一个askyesno信息确认弹窗定义完成,点击 是 返回True, 否 返回False(可对应整型布尔值)

巧记:同上理解,本类型名称为askyesno弹窗,那么可以将其名称看作成英文ask yes no==> 询问 是 否。这样就可以将其理解成用来 询问用户的是否执行下一步 弹窗。

通过了解其返回值,我们可以对应的绑定接下来执行的内容。例如:

mess =tk.messagebox.askyesno(title='display_messagebox',message='This is a askyesno_messagebox')
if mess ==0:
	print('Choose not!')

在这里插入图片描述

第二种:是Y/否N 确认弹窗

代码片

window =tk.Tk() 
window.title('Test Window') 
window.geometry('300x200')  

def display_messagebox(): 
	tk.messagebox.askquestion(title='display_messagebox',
		message='This is a askquestion_messagebox')  # 信息确认弹窗 是 yes或 否 no
	
tk.Button(window,text='click me',command=display_messagebox).pack()  

window.mainloop() 

至此,一个askquestion信息确认弹窗定义完成,点击 是 返回yes, 否 返回no

通过了解其返回值,我们可以对应的绑定接下来执行的内容。方法与本类第一种同理。

巧记:同上理解,本类型名称为askquestion弹窗,那么可以将其名称看作成英文ask question==> 询问 问题。这样就可以将其理解成用来 询问用户问题 弹窗。

在这里插入图片描述

第三种:确认T/ 取消F 确认弹窗

代码片

window =tk.Tk()  
window.title('Test Window')  
window.geometry('300x200')  

def display_messagebox(): 
	tk.messagebox.askokcancel(title='display_messagebox',
		message='This is a askokcancel_messagebox')  # 信息确认弹窗 确定 True或 取消 False
	
tk.Button(window,text='click me',command=display_messagebox).pack()  

window.mainloop() # 主窗口循环运行

至此,一个askokcancel信息确认弹窗定义完成,点击 是 返回True, 否 返回False,点击关闭 返回False

通过了解其返回值,我们可以对应的绑定接下来执行的内容。方法与本类第一种同理。

巧记:同上理解,本类型名称为askokcancel弹窗,那么可以将其名称看作成英文ask ok cancel==> 询问 确定 取消。这样就可以将其理解成用来 询问用户是否确定执行下一步 弹窗。

在这里插入图片描述

第四种:确认Y / 否 F / 取消N 确认弹窗

代码片

window =tk.Tk()  
window.title('Test Window')  
window.geometry('300x200')  

def display_messagebox(): # 定义一个响应函数
	tk.messagebox.askyesnocancel(title='display_messagebox',
		message='This is a askyesnocancel') # 信息确认弹窗 是 True / 否 False 或 取消 None
	
tk.Button(window,text='click me',command=display_messagebox).pack()  

window.mainloop() 

至此,一个askyesnocancel信息确认弹窗定义完成,点击 是 返回True, 否 返回False,取消 返回None,点击关闭 返回None

通过了解其返回值,我们可以对应的绑定接下来执行的内容。方法与本类第一种同理。

巧记:同上理解,本类型名称为askyesnocancel弹窗,那么可以将其名称看作成英文ask yes no cancel==> 询问 是 否 取消。这样就可以将其理解成用来 询问用户的是否执行下一步 弹窗。

在这里插入图片描述

第五种:重试T / 取消F 确认弹窗

代码片

window =tk.Tk()  
window.title('Test Window') 
window.geometry('300x200')  

def display_messagebox():
	tk.messagebox.askretrycancel(title='display_messagebox',
		message='This is a askretrycancel') # 信息确认弹窗 重试 True / 取消 False
	
tk.Button(window,text='click me',command=display_messagebox).pack() 

window.mainloop() 

至此,一个askretrycancel信息确认弹窗定义完成,点击 重试 返回True / 取消 返回False,点击关闭 False

通过了解其返回值,我们可以对应的绑定接下来执行的内容。方法与本类第一种同理。

巧记:同上理解,本类型名称为askretrycancel弹窗,那么可以将其名称看作成英文ask retry cancel==> 询问 重试 取消。这样就可以将其理解成用来 询问用户是否需要进行重试操作 弹窗。

在这里插入图片描述

五种确认信息弹窗已经讲完了,五种确认信息弹窗有自己的显示方式,且返回值每种类型返回值都有些许不同,所以通常在我们使用过程当中,可以使用一部分作为自己常用的类型。

弹窗的参数详解

title      弹窗窗口标题;
message    弹窗所显示的消息;
default    定义弹窗按钮;
icon       定义弹窗图标;
parent     定义弹窗的父组件;
type       定义弹窗类型;

写在最后的话

Python的Tkinter库中8大弹窗类型分别都写完了,其主要分为3种信息提醒,5种确认信息的弹窗。每种弹窗都有个自己的特点,返回类型也有些许不同,如何将这些功能灵活运用上我们实际操作当中,这些才是每一种功能弹窗存在的具体意义。

本文写到这里也接近尾声,如果在本文中存在疑问、错误或纰漏,还希望各位能够在评论区提出一起学习。如果你喜欢我的文章,欢迎关注+点赞+收藏三连支持一下,你的鼓励将是我继续创作的继续动力。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐