Tkinter 對話方塊

Salman Mehmood 2022年5月17日
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()

輸出:

showinfo()對話方塊

如果你希望顯示錯誤對話方塊,你將輸入 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()

輸出:

showerror()對話方塊

另一個是一個警告對話方塊,就像你帶著警告標誌去的地方。使用 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()

輸出:

showwarning()對話方塊

我們將使用以下對話方塊中的 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()

輸出:

askyesno() 對話方塊

askokcancel() 對話方塊幫助我們做出兩個決定,要麼是 "ok",要麼是 "cancel"。在此示例中,我們使用兩個條件進行了一些更改。

由於對話方塊通過使用者操作返回一個 TrueFalse 值,我們可以在對話方塊上設定條件。

程式碼:

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()

輸出:

askokcancel() 對話方塊

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()

輸出:

askretrycancel()對話方塊

作者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

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