Tkinter 對話方塊
我們將介紹彈出對話方塊,看看如何為不同的目的建立不同型別的對話方塊。
在 Python 中,圖形使用者介面應用程式開發彈出對話方塊是小尺寸的視窗,可以用來顯示訊息框、錯誤訊息框、警告訊息、問題訊息框等。
我們可以使用 tkinter
模組中的 messagebox
類生成彈出對話方塊。
在 Tkinter 中使用 messagebox
建立不同的對話方塊
首先,我們將匯入下面程式碼中所述的這兩個。
from tkinter import *
from tkinter import messagebox
每當你想在 Tkinter 中做任何事情時,你都必須設定一個視窗以開始使用 GUI 視窗。下面的程式碼行將我們的視窗置於螢幕中央,位於所有內容的頂層。
GUI.eval("tk::PlaceWindow %s center" % GUI.winfo_toplevel())
下面的程式碼行指定一旦我們開啟它就不會隱藏在另一個視窗後面。它將確保它與前面一樣。
我們撤回我們的視窗,這將使我們的視窗不可見。如果不使用此程式碼,你將能夠在彈出視窗後面看到另一個視窗。
GUI.withdraw()
下一行使用接受兩個字串引數的 showinfo()
方法。第一個是標題
,第二個是你要在此對話方塊中顯示的訊息
。
messagebox.showinfo("information", "You have created successfully the showinfo box")
最後,我們確保在最後的程式碼行中完成後退出我們的視窗,因此它不再顯示在螢幕上。這是 showinfo
對話方塊的完整示例程式碼。
程式碼:
from tkinter import *
from tkinter import messagebox
GUI = Tk()
GUI.eval("tk::PlaceWindow %s center" % GUI.winfo_toplevel())
GUI.withdraw()
messagebox.showinfo("information", "You have created successfully the showinfo box")
GUI.deiconify()
GUI.destroy()
GUI.quit()
輸出:
如果你希望顯示錯誤對話方塊,你將輸入 showerror()
訊息框。
程式碼:
from tkinter import *
from tkinter import messagebox
GUI = Tk()
GUI.eval("tk::PlaceWindow %s center" % GUI.winfo_toplevel())
GUI.withdraw()
# Displays an error dialog box
messagebox.showerror("Error", "You have generated an error successfully")
GUI.deiconify()
GUI.destroy()
GUI.quit()
輸出:
另一個是一個警告對話方塊,就像你帶著警告標誌去的地方。使用 showwarning()
訊息框。
程式碼:
from tkinter import *
from tkinter import messagebox
GUI = Tk()
GUI.eval("tk::PlaceWindow %s center" % GUI.winfo_toplevel())
GUI.withdraw()
# Displays a warning dialog box
messagebox.showwarning("Warning", "This is warning message by tkinter")
GUI.deiconify()
GUI.destroy()
GUI.quit()
輸出:
我們將使用以下對話方塊中的 askyesno()
訊息框在彈出視窗中設定是/否按鈕。
程式碼:
from tkinter import *
from tkinter import messagebox
GUI = Tk()
GUI.eval("tk::PlaceWindow %s center" % GUI.winfo_toplevel())
GUI.withdraw()
# Displays yes/no dialog box
messagebox.askyesno("Asking", "Do you love delftstack?")
GUI.deiconify()
GUI.destroy()
GUI.quit()
輸出:
askokcancel()
對話方塊幫助我們做出兩個決定,要麼是 "ok"
,要麼是 "cancel"
。在此示例中,我們使用兩個條件進行了一些更改。
由於對話方塊通過使用者操作返回一個 True
或 False
值,我們可以在對話方塊上設定條件。
程式碼:
from tkinter import *
from tkinter import messagebox
GUI = Tk()
GUI.eval("tk::PlaceWindow %s center" % GUI.winfo_toplevel())
GUI.withdraw()
# Displays askokcancel dialog box
if messagebox.askokcancel("askokcancel", "Update your tkinter version") == True:
print("ok")
else:
print("cancel")
GUI.deiconify()
GUI.destroy()
GUI.quit()
輸出:
askretrycancel()
對話方塊要求我們重試該過程。icon
引數幫助我們設定任何圖示。
在我們的例子中,我們只是設定了一個錯誤圖示。
程式碼:
from tkinter import *
from tkinter import messagebox
GUI = Tk()
GUI.eval("tk::PlaceWindow %s center" % GUI.winfo_toplevel())
GUI.withdraw()
# Displays askretrycancel dialog box
messagebox.askretrycancel("Retry", "Invalid pin please Retry", icon="error")
GUI.deiconify()
GUI.destroy()
GUI.quit()
輸出:
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn