要使用Tkinter的MessageBox,首先要先將tkMessageBox package import進來。
import tkMessageBox
tkMessageBox的用法大概像下面這樣,依使用需求呼叫不同的方法,並帶入訊息視窗的標題、內文、以及一些額外的參數就可以了。
tkMessageBox.FunctionName(title, message [, options])
可以呼叫的方法有showinfo…
tkMessageBox.showinfo("showinfo demo", "Info")
![]()
showwarning…
tkMessageBox.showwarning("showwarning demo", "Warning")
![]()
showerror…
tkMessageBox.showerror("showerror demo", "Error")
![]()
這些是用來提示使用者訊息用的訊息框,另外也有用來詢問使用者動作的訊息框。像是askquestion…
tkMessageBox.askquestion("askquestion demo", "Sure?!")
![]()
askokcancel…
tkMessageBox.askokcancel("askokcancel demo", "OK?! CANCEL?!")
![]()
askyesno…
tkMessageBox.askyesno("askyesno demo", "Yes?! No?!")
![]()
以及askretrycancel…
tkMessageBox.askretrycancel("askretrycancel demo", "Retry?! Cancel?!")
![]()
在使用這種用來詢問使用者動作的訊息框時,我們可以帶入default參數下去指定預設選取的對話框按鈕。像是下面這樣:
tkMessageBox.askquestion("askquestion demo", "Sure?!")
tkMessageBox.askokcancel("askokcancel demo", "OK?! CANCEL?!", default = "ok")
tkMessageBox.askyesno("askyesno demo", "Yes?! No?!", default = "no")
tkMessageBox.askretrycancel("askretrycancel demo", "Retry?! Cancel?!", default = "cancel")
若是要知道使用者選取的結果,我們可以直接接方法的回傳值,除了askquest是回傳yes/no外,其它的方法在按下OK或是Yes按鈕時是回傳True,按下No與Cancel按鈕是回傳False。
print "askquestion's dialogresult: %s" % tkMessageBox.askquestion("askquestion demo", "Sure?!")
print "askokcancel's dialogresult: %s" % tkMessageBox.askokcancel("askokcancel demo", "OK?! CANCEL?!", default = "ok")
print "askyesno's dialogresult: %s" % tkMessageBox.askyesno("askyesno demo", "Yes?! No?!", default = "no")
print "askretrycancel's dialogresult: %s" % tkMessageBox.askretrycancel("askretrycancel demo", "Retry?! Cancel?!", default = "cancel")
![]()
最後附上完整的測試範例:
import tkMessageBox
tkMessageBox.showinfo("showinfo demo", "Info")
tkMessageBox.showwarning("showwarning demo", "Warning")
tkMessageBox.showerror("showerror demo", "Error")
print "askquestion's dialogresult: %s" % tkMessageBox.askquestion("askquestion demo", "Sure?!")
print "askokcancel's dialogresult: %s" % tkMessageBox.askokcancel("askokcancel demo", "OK?! CANCEL?!", default = "ok")
print "askyesno's dialogresult: %s" % tkMessageBox.askyesno("askyesno demo", "Yes?! No?!", default = "no")
print "askretrycancel's dialogresult: %s" % tkMessageBox.askretrycancel("askretrycancel demo", "Retry?! Cancel?!", default = "cancel")
Link
- Standard Dialogs
- Python Tkinter tkMessageBox
- Tkinter 8.5 reference: a GUI for Python