Tkinter Messagebox教程
Python中的tkinter模块内有Messagebox模块,提供了8个对话框,这些对话框可以应用在不同场合,本节将做说明。
(1)showinfo(title,message,options):显示一般提示消息。
from tkinter import *
from tkinter import messagebox
def myMsg(): # 单击Hello按钮时执行
result = messagebox.showinfo("Customize the title of the message box","Welcome to apidemos.com")
print("messagebox return value:",result)
root = Tk()
root.title("apidemos.com") # 窗口标题
root.geometry("300x160") # 窗口宽300高160
Button(root,text="Hello",command=myMsg).pack()
root.mainloop()
输出:
2)showwarning(title,message,options):显示警告消息。
from tkinter import *
from tkinter import messagebox
def myMsg(): # 单击Hello按钮时执行
result = messagebox.showwarning("Customize the title of messagebox","Welcome to apidemos.com")
print("messagebox return value:",result)
root = Tk()
root.title("apidemos.com") # 窗口标题
root.geometry("300x160") # 窗口宽300高160
Button(root,text="Hello",command=myMsg).pack()
root.mainloop()
输出:
(3)showerror(title,message,options):显示错误消息。
from tkinter import *
from tkinter import messagebox
def myMsg(): # 单击Hello按钮时执行
result = messagebox.showerror("Customize the title of messagebox","Welcome to apidemos.com")
print("messagebox return value:",result)
root = Tk()
root.title("apidemos.com") # 窗口标题
root.geometry("300x160") # 窗口宽300高160
Button(root,text="Hello",command=myMsg).pack()
root.mainloop()
输出:
(4)askquestion(title,message,options):显示询问消息。若单击“是”按钮会传回“yes”,若单击“否”按钮会传回“no”。
from tkinter import *
from tkinter import messagebox
def myMsg(): # 单击Hello按钮时执行
result = messagebox.askquestion("Customize the title of messagebox","Welcome to apidemos.com")
print("messagebox return value:",result)
root = Tk()
root.title("apidemos.com") # 窗口标题
root.geometry("300x160") # 窗口宽300高160
Button(root,text="Hello",command=myMsg).pack()
root.mainloop()
输出:
(5)askokcancel(title,message,options):显示确定或取消消息。若单击“确定”按钮会传回True,若单击“取消”按钮会传回False。
from tkinter import *
from tkinter import messagebox
def myMsg(): # 单击Hello按钮时执行
result = messagebox.askokcancel("Customize the title of messagebox","Welcome to apidemos.com")
print("messagebox return value:",result)
root = Tk()
root.title("apidemos.com") # 窗口标题
root.geometry("300x160") # 窗口宽300高160
Button(root,text="Hello",command=myMsg).pack()
root.mainloop()
输出:
(6)askyesno(title,message,options):显示“是或否”消息。若单击“是”按钮会传回True,若单击“否”按钮会传回False。
from tkinter import *
from tkinter import messagebox
def myMsg(): # 单击Hello按钮时执行
result = messagebox.askyesno("Customize the title of messagebox","Welcome to apidemos.com")
print("messagebox return value:",result)
root = Tk()
root.title("apidemos.com") # 窗口标题
root.geometry("300x160") # 窗口宽300高160
Button(root,text="Hello",command=myMsg).pack()
root.mainloop()
输出:
(7)askyesnocancel(title,message,options):显示“是或否或取消”消息,若单击“是”按钮会传回True,若单击“否”按钮会传回False,若单击“取消”按钮传回None。
from tkinter import *
from tkinter import messagebox
def myMsg(): # 单击Hello按钮时执行
result = messagebox.askyesnocancel("Customize the title of messagebox","Welcome to apidemos.com")
print("messagebox return value:",result)
root = Tk()
root.title("apidemos.com") # 窗口标题
root.geometry("300x160") # 窗口宽300高160
Button(root,text="Hello",command=myMsg).pack()
root.mainloop()
输出:
(8)askretrycancel(title,message,options):显示“重试或取消”消息。若单击“重试”按钮会传回True,若单击“取消”按钮会传回False。
from tkinter import *
from tkinter import messagebox
def myMsg(): # 单击Hello按钮时执行
result = messagebox.askretrycancel("Customize the title of messagebox","Welcome to apidemos.com")
print("messagebox return value:",result)
root = Tk()
root.title("apidemos.com") # 窗口标题
root.geometry("300x160") # 窗口宽300高160
Button(root,text="Hello",command=myMsg).pack()
root.mainloop()
输出:
上述对话框方法内的参数大致相同,title是对话框的名称,message是对话框内的文字,options是选择性参数,可能值有下列三种。
(1)default constant:默认按钮是OK(确定)、Yes(是)、Retry(重试)在前面,也可更改此设定。
(2)icon(constant):可设定所显示的图标,有INFO、ERROR、QUESTION、WARNING4种图标可以设置。
(3)parent(widget):指出当对话框关闭时,焦点窗口将返回此父窗口。
最后要留意的是上述对话框是放在tkinter模块内的message模块下,所以若是要使用这些默认的对话框需要在程序开头增加下列导入语句。
from tkinter import messagebox
示例1
对话框设计的基本应用。
from tkinter import *
from tkinter import messagebox
def myMsg(): # 单击Hello按钮时执行
result = messagebox.showinfo("Customize the title of messagebox","Welcome to apidemos.com")
print("messagebox return value:",result)
root = Tk()
root.title("apidemos.com") # 窗口标题
root.geometry("300x160") # 窗口宽300高160
Button(root,text="Hello",command=myMsg).pack()
root.mainloop()
输出:
使用Messagebox时,可以很容易建立和用户之间的对话,当用户单击按钮时,所响应的内容虽然已经说明过了,但是下面还是以设计程序行演示出用户单击功能按钮时所传回的信息。
示例2
设计两个按钮,当单击按钮时会弹出对话框,当用户有响应时,在Python Shell窗口中列出所响应的内容。
from tkinter import *
from tkinter import messagebox
def myMsg1(): # 单击Installation failed按钮时执行
ret = messagebox.askretrycancel("Test1","Installation failed, try again?")
print("Installation failed",ret)
def myMsg2(): # 单击Edit Complete按钮时执行
ret = messagebox.askyesnocancel("Test2","Editing complete, yes or no or cancel?")
print("Edit Complete",ret)
root = Tk()
root.title("apidemos.com") # 窗口标题
Button(root,text="Installation failed",command=myMsg1).pack()
Button(root,text="Edit Complete",command=myMsg2).pack()
root.mainloop()
输出:
有了用户单击按钮的传回值,就可以针对返回值做更进一步的操作了。