对话框简介
在图形用户界面中,对话框是人机交流的一种方式,对话框(又称对话方块[1])是一种特殊的视窗, 用来在用户界面中向用户显示信息,或者在需要的时候获得用户的输入响应。之所以称之为“对话框”是因为它们使计算机和用户之间构成了一个对话——或者是通知用户一些信息,或者是请求用户的输入,或者两者皆有。----百度百科
普遍认为对话框是一种次要窗口,其中包含按钮和各种选项,通过它们可以完成特定命令或任务。对话框与窗口有区别,它没有最大化按钮,最小化按钮,基本上不能改变形状大小。
在tkinter标准对话框中,包含简单的消息对话框和用户输入对话框。其中,信息框以窗口的形式向用户输出信息,也可以获取用户所单击的按钮信息;而在输入对话框中,一般要求用户输入字符串、整型值或者浮点型值。
消息对话框
可用tkinter.messagebox模块在窗体中创建标准消息对话框。tkinter.messagebox模块常用方法如下
方法 | 功能 |
---|---|
askokcancel(title=None, message=None, **options) | 询问是否应该进行操作;如果答案是ok,则返回true |
askquestion(title=None, message=None, **options) | 问一个问题 |
askretrycancel(title=None, message=None, **options) | 询问是否需要重试操作;如果答案是肯定的,返回true |
askyesno(title=None, message=None, **options) | 问一个问题;如果答案是肯定的,返回true |
askyesnocancel(title=None, message=None, **options) | 问一个问题;如果答案是yes,返回true,如果取消,返回None。 |
showerror(title=None, message=None, **options) | 显示错误消息 |
showinfo(title=None, message=None, **options) | 显示信息消息 |
showwarning(title=None, message=None, **options) | 显示警告信息 |
接下来将逐个实验每个方法
import tkinter
from tkinter import messagebox as msgbox
def btn1_clicked():
msgbox.showinfo("Info","showinfo function")
def btn2_clicked():
msgbox.showwarning("Warning","showwarning function")
def btn3_clicked():
msgbox.showerror("Error","showerror function")
def btn4_clicked():
msgbox.askokcancel("askokcancel","askokcancel function")
def btn5_clicked():
msgbox.askquestion("askquestion","askquestion function")
def btn6_clicked():
msgbox.askretrycancel("askretrycancel","askretrycancel function")
def btn7_clicked():
msgbox.askyesno("askyesno","askyesno function")
def btn8_clicked():
msgbox.askyesnocancel("askyesnocancel","askyesnocancel function")
if __name__=="__main__":
root=tkinter.Tk()
root.title("MsgBox Test")
btn=tkinter.Button(root,text='showinfo',command=btn1_clicked)
btn.pack(fill=tkinter.X)
btn=tkinter.Button(root,text='showwarning',command=btn2_clicked)
btn.pack(fill=tkinter.X)
btn=tkinter.Button(root,text='showerror',command=btn3_clicked)
btn.pack(fill=tkinter.X)
btn=tkinter.Button(root,text='askokcancel',command=btn4_clicked)
btn.pack(fill=tkinter.X)
btn=tkinter.Button(root,text='askquestion',command=btn5_clicked)
btn.pack(fill=tkinter.X)
btn=tkinter.Button(root,text='askretrycancel',command=btn6_clicked)
btn.pack(fill=tkinter.X)
btn=tkinter.Button(root,text='askyesno',command=btn7_clicked)
btn.pack(fill=tkinter.X)
btn=tkinter.Button(root,text='askyesnocancel',command=btn8_clicked)
btn.pack(fill=tkinter.X)
root.mainloop()
显示结果:
每个消息框的显示结果:
除了上述实例中使用的标准消息对话框外,可可使用方法tkinter.messagebox._show创建其他类型的消息对话框。在方法tkinter.message._show中有如下所示控制参数
参数 | 说明 |
---|---|
default | 设置消息框的按钮 |
icon | 设置消息框的图标 |
message | 设置消息框所显示的消息 |
parent | 设置消息框的父组件 |
title | 设置消息框的标题 |
type | 设置消息框的类型 |
import tkinter
from tkinter import messagebox as msgbox
def btn1_clicked():
msgbox.showinfo("Info","showinfo function")
def btn2_clicked():
msgbox.showwarning("Warning","showwarning function")
def btn3_clicked():
msgbox.showerror("Error","showerror function")
def btn4_clicked():
msgbox.askokcancel("askokcancel","askokcancel function")
def btn5_clicked():
msgbox.askquestion("askquestion","askquestion function")
def btn6_clicked():
msgbox.askretrycancel("askretrycancel","askretrycancel function")
def btn7_clicked():
msgbox.askyesno("askyesno","askyesno function")
def btn8_clicked():
msgbox.askyesnocancel("askyesnocancel","askyesnocancel function")
def btn9_clicked():
msgbox._show(title='自定义消息框',icon='info',message='注意上网休息时间!',type='ok')
if __name__=="__main__":
root=tkinter.Tk()
root.title("MsgBox Test")
btn=tkinter.Button(root,text='showinfo',command=btn1_clicked)
btn.pack(fill=tkinter.X)
btn=tkinter.Button(root,text='showwarning',command=btn2_clicked)
btn.pack(fill=tkinter.X)
btn=tkinter.Button(root,text='showerror',command=btn3_clicked)
btn.pack(fill=tkinter.X)
btn=tkinter.Button(root,text='askokcancel',command=btn4_clicked)
btn.pack(fill=tkinter.X)
btn=tkinter.Button(root,text='askquestion',command=btn5_clicked)
btn.pack(fill=tkinter.X)
btn=tkinter.Button(root,text='askretrycancel',command=btn6_clicked)
btn.pack(fill=tkinter.X)
btn=tkinter.Button(root,text='askyesno',command=btn7_clicked)
btn.pack(fill=tkinter.X)
btn=tkinter.Button(root,text='askyesnocancel',command=btn8_clicked)
btn.pack(fill=tkinter.X)
btn=tkinter.Button(root,text='自定义',command=btn9_clicked)
btn.pack(fill=tkinter.X)
root.mainloop()
输出:
输入对话框
在python程序中,可以使用tkinter.simpledialog模块创建标准的输入对话框,此模块可以创建如下3种不同类型的对话框。
方法 | 参数 | 功能 |
---|---|---|
askfloat(title, prompt, **kw) | title——对话标题,prompt——标签文本,**kw——参见SimpleDialog类 | 从用户那里获得一个浮点数,返回值是一个浮点数 |
askinteger(title, prompt, **kw) | 同上 | 从用户那里获得一个整数,返回值是一个整数 |
askstring(title, prompt, **kw) | 同上 | 从用户那里获得一个字符串,返回值是一个字符串 |
import tkinter
import tkinter.simpledialog
def InStr():
r = tkinter.simpledialog.askstring('Python',
'字符串',
initialvalue='字符串')
print(r)
def InInt():
r = tkinter.simpledialog.askinteger('Python','输入整数')
print(r)
def InFlo():
r = tkinter.simpledialog.askfloat('Python','I输入浮点数')
print(r)
root = tkinter.Tk()
button1 = tkinter.Button(root,text = '输入字符串',
command = InStr)
button1.pack(side='left')
button2 = tkinter.Button(root,text = '输入整数',
command = InInt)
button2.pack(side='left')
button2 = tkinter.Button(root,text = '输入浮点数',
command = InFlo)
button2.pack(side='left')
root.mainloop()
输出:
python交互式控制台打印
abc