Tkinter 对话框

Salman Mehmood 2024年2月15日
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