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()
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~