Messagebox 消息提示框
Messagebox 消息提示框是 tkinter 里用来“提示”或“询问”用户的元件,可以设定只有一颗按钮或两颗可二择一的按钮,这篇教学会介绍如何在 tkinter 中使用 Messagebox 消息提示框。
快速导览:
因为 Google Colab 不支援 tkinter,所以请使用本机环境 ( 参考:使用 Python 虚拟环境 ) 或使用 Anaconda Jupyter 进行实作 ( 参考:使用 Anaconda )。
Messagebox 的种类
加载 tkinter 的 messagebox 模组后,就能在视窗中呼叫并显示 messagebox,messagebox 有下列几个种类,分别会有各自不同的按钮。
| 方法种类 | 说明 |
|---|---|
| showinfo | 普通消息,一个关闭按钮。 |
| showwarning | 警告消息,一个关闭按钮。 |
| showerror | 错误消息,一个关闭按钮。 |
| askquestion | 提问,两个按钮 ( yes/no )。 |
| askyesno | 是或否,两个按钮 ( yes/no )。 |
| askokcancel | 取消,两个按钮 ( ok/cancel )。 |
| askretrycancel | 重试,两个按钮 ( retry/cancel)。 |
使用 Messagebox
使用 messagebox 不需要搭配任何元件,加载 tkinter 的 messagebox 模组后,直接呼叫对应的方法就会出现消息提示框,下方的程序码会在执行后,出现通知的消息框 ( 不同操作系统出现的默认画面也会不同,范例使用的是 MacOS 操作系统 )。
import tkinter as tk
from tkinter import messagebox
messagebox.showinfo('showinfo', '訊息測試')
除了单纯呼叫 messagebox,也可在透过与其他元件的互动后,透过函数呼叫显示 messagebox,下方的例子执行后,点击不同的按钮就会出现不同的 messagebox。
import tkinter as tk
from tkinter import messagebox
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('300x300')
def showinfo(): messagebox.showinfo('showinfo', 'showinfo')
btn_showinfo = tk.Button(root, text='showinfo', command=showinfo)
btn_showinfo.pack()
def showwarning(): messagebox.showwarning('showwarning', 'showwarning')
btn_showwarning = tk.Button(root, text='showwarning', command=showwarning)
btn_showwarning.pack()
def showerror(): messagebox.showerror('showerror', 'showerror')
btn_showerror = tk.Button(root, text='showerror', command=showerror)
btn_showerror.pack()
def askquestion(): messagebox.askquestion('askquestion', 'askquestion')
btn_askquestion = tk.Button(root, text='askquestion', command=askquestion)
btn_askquestion.pack()
def askyesno(): messagebox.askyesno('askyesno', 'askyesno')
btn_askyesno = tk.Button(root, text='askyesno', command=askyesno)
btn_askyesno.pack()
def askokcancel(): messagebox.askokcancel('askokcancel', 'askokcancel')
btn_askokcancel = tk.Button(root, text='askokcancel', command=askokcancel)
btn_askokcancel.pack()
def askretrycancel(): messagebox.askretrycancel('askretrycancel', 'askretrycancel')
btn_askretrycancel = tk.Button(root, text='askretrycancel', command=askretrycancel)
btn_askretrycancel.pack()
root.mainloop()
取得 Messagebox 的选择结果
当用户点击 messagebox 的按钮后,都会有一个回传值,在函数里取得这个回传值,就可透过逻辑判断进行对应的行为,下方的程序码会取得用户按下 yes 还是 no 的结果。
import tkinter as tk
from tkinter import messagebox
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('300x300')
def askyesno():
result = messagebox.askyesno('askyesno', 'askyesno')
print(result)
btn_askyesno = tk.Button(root, text='askyesno', command=askyesno)
btn_askyesno.pack()
root.mainloop()
微信扫码关注
抖音扫码关注