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()
输出结果: