Python messagebox的工具函数

在Tkinter包下的message模块下提供了大量的工具函数来生成各种下消息框
messagebox的工具函数大致分为图标区、提示区和按钮区
Python messagebox的工具函数_第1张图片

messagebox中工具函数如下:
1.消息提示框
tkinter.messagebox.showinfo(title,message,icon= None,type= None):
返回值为点击的按键的值,包括“yes”(是)、“no”(否)、“retry”(重试)、“ok”(确定)、“cancel”(取消)、“ignore”(忽略)、”abort“(中止)。

2.消息警告框
tkinter.messagebox.showwarning(title,message,icon= None,type= None):
返回值为点击的按键的值,包括“yes”(是)、“no”(否)、“retry”(重试)、“ok”(确定)、“cancel”(取消)、“ignore”(忽略)、”abort“(中止)。

3.消息错误框
tkinter.messagebox.showerror(title,message,icon= None,type= None):
返回值为点击的按键的值,包括“yes”(是)、“no”(否)、“retry”(重试)、“ok”(确定)、“cancel”(取消)、“ignore”(忽略)、”abort“(中止)。

4.对话框
tkinter.messagebox.askquestion(title,message,icon= None,type= None):
返回值为点击的按键的值,包括“yes”(是)、“no”(否)、“retry”(重试)、“ok”(确定)、“cancel”(取消)、“ignore”(忽略)、”abort“(中止)。

tkinter.messagebox.askokcancel(title,message,icon= None,type= None):
返回值为True或False,当单击的按钮值为“ok”(确定)时返回True,否则都为False

tkinter.messagebox.askyesno(title,message,icon= None,type= None):
返回值为True或False,当单击的按钮键值为“yes”(是)时返回True,否则都返回False

tkinter.messagebox.askyesnocancel(title,message,icon= None,type= None):
返回值为True、False、None,当单击的按键值为“yes”(是)时返回True、当单击的按键值为“cancel”(取消)时返回None,否则都返回False

tkinter.messagebox.askretrycancel(title,message,icon= None,type= None):
返回值为True或False,当单击的按钮值为“retry”(重试)时返回True,否则都为False

默认情况下使用者在调用messagebox时只要设置提示区字符串即可。但如果有需要,可以通过如下两个选项来设置图标和按键
icon:定制的图标区图标选项,该选项支持“error”、“info”、“question”、“warning”(默认为“info”图标)
Python messagebox的工具函数_第2张图片Python messagebox的工具函数_第3张图片Python messagebox的工具函数_第4张图片
Python messagebox的工具函数_第5张图片
type:定制按钮的选项。该选项支持“abortretryignore”(中止、重试、忽略)、“ok”(确定)、“okcancel”(确定、取消)、“retrycancel”(重试、取消)、“yesno”(是、否)、“yesnocancel”(是、否、取消)(默认为“ok”按键)
Python messagebox的工具函数_第6张图片Python messagebox的工具函数_第7张图片Python messagebox的工具函数_第8张图片Python messagebox的工具函数_第9张图片
Python messagebox的工具函数_第10张图片Python messagebox的工具函数_第11张图片
title:messagebox消息框的标题
Python messagebox的工具函数_第12张图片
message:提示区字符串
Python messagebox的工具函数_第13张图片

下面代码通过两组单选钮让用户动态选择不同的icon和type选项的效果:

from tkinter import *
# 导入ttk
from tkinter import ttk
# 导入messagebox
from tkinter import messagebox


class App:
    def __init__(self, master):
        self.master = master
        self.initWidgets()

    def initWidgets(self):
        # 创建第一个Labelframe,用于选择图标类型
        topF = ttk.Frame(self.master)
        topF.pack(fill=BOTH)
        lf1 = ttk.Labelframe(topF, text='请选择图标类型')
        lf1.pack(side=LEFT, fill=BOTH, expand=1, padx=10, pady=5)
        i = 0
        self.iconVar = IntVar()
        self.icons = [None, 'error', 'info', 'question', 'warning']
        # 使用循环创建多个RadioButton,并放入Labelframe中
        for icon in self.icons:
            ttk.Radiobutton(lf1, text=icon if icon is not None else '默认', value=i,
                            variable=self.iconVar).pack(side=TOP, anchor=W)
            i += 1
        self.iconVar.set(0)
        #创建第二个labelframe,用于选择按钮类型
        lf2 = ttk.Labelframe(topF, text='选择按钮类型')
        lf2.pack(side=LEFT, fill=BOTH, expand=1, padx=10, pady=5)
        i = 0
        self.typeVar = IntVar()
        self.types = [None, 'abortretryignore', 'ok', 'okcancel', 'retrycancel', 'yesno', 'yesnocancel']
        # 利用循环创建多个Radiobutton,并放入Labelframe中
        for tp in self.types:
            ttk.Radiobutton(lf2, text=tp if tp is not None else '默认', value=i, variable=self.typeVar).pack(side=TOP,
                                                                                                           anchor=W)
            i += 1
        self.typeVar.set(0)
        #创建Frame,用于包含多个按钮来生成不同的消息框
        bottomF = ttk.Frame(self.master)
        bottomF.pack(fill=BOTH)
        # 创建8个按钮,并为之绑定事件处理方法
        ttk.Button(bottomF, text='showinfo', command=self.showinfo_clicked).pack(side=LEFT, fill=X, ipadx=5, ipady=5,
                                                                                 padx=5, pady=5)
        ttk.Button(bottomF, text='showwarning', command=self.showwarning_clicked).pack(side=LEFT, fill=X, ipadx=5,
                                                                                       ipady=5, padx=5, pady=5)
        ttk.Button(bottomF, text='showerror', command=self.showerror_clicked).pack(side=LEFT, fill=X, ipadx=5, ipady=5,
                                                                                   padx=5, pady=5)
        ttk.Button(bottomF, text='askquestion', command=self.askquestion_clicked).pack(side=LEFT, fill=X, ipadx=5,
                                                                                       ipady=5, padx=5, pady=5)
        ttk.Button(bottomF, text='askokcancel', command=self.askokcancel_clicked).pack(side=LEFT, fill=X, ipadx=5,
                                                                                       ipady=5, padx=5, pady=5)
        ttk.Button(bottomF, text='askyesno', command=self.askyesno_clicked).pack(side=LEFT, fill=X, ipadx=5, ipady=5,
                                                                                 padx=5, pady=5)
        ttk.Button(bottomF, text='askyesnocancel', command=self.askyesnocancel_clicked).pack(side=LEFT, fill=X, ipadx=5,
                                                                                             ipady=5, padx=5, pady=5)
        ttk.Button(bottomF, text='askretrycancel', command=self.askretrycancel_clicked).pack(side=LEFT, fill=X, ipadx=5,
                                                                                             ipady=5, padx=5, pady=5)

    def showinfo_clicked(self):
        print(messagebox.showinfo('Info', 'showinfo测试', icon=self.icons[self.iconVar.get()],
                                  type=self.types[self.typeVar.get()]))

    def showwarning_clicked(self):
        print(messagebox.showwarning('Warning', 'showwarning测试', icon=self.icons[self.iconVar.get()],
                                     type=self.types[self.typeVar.get()]))

    def showerror_clicked(self):
        print(messagebox.showerror('Error', 'showerror测试', icon=self.icons[self.iconVar.get()],
                                   type=self.types[self.typeVar.get()]))

    def askquestion_clicked(self):
        print(messagebox.askquestion('Question', 'askquestion测试', icon=self.icons[self.iconVar.get()],
                                     type=self.types[self.typeVar.get()]))

    def askokcancel_clicked(self):
        print(messagebox.askokcancel('Okcancel', 'askokcancel测试', icon=self.icons[self.iconVar.get()],
                                     type=self.types[self.typeVar.get()]))

    def askyesno_clicked(self):
        print(messagebox.askyesno('Yesno', 'askyesno测试', icon=self.icons[self.iconVar.get()],
                                  type=self.types[self.typeVar.get()]))

    def askyesnocancel_clicked(self):
        print(messagebox.askyesnocancel('Yesnocancel', 'askyesnocancel', icon=self.icons[self.iconVar.get()],
                                        type=self.types[self.typeVar.get()]))

    def askretrycancel_clicked(self):
        print(messagebox.askretrycancel('Retrycancel', 'askretrycancel', icon=self.icons[self.iconVar.get()],
                                        type=self.types[self.typeVar.get()]))


root = Tk()
root.title('message测试')
App(root)
root.mainloop()

运行程序:Python messagebox的工具函数_第14张图片

你可能感兴趣的:(笔记,python)