五笔打字通主页
我们在编程中,常常需要提供一个对话框,让用户可以自行输入字符、数值,或者提供几个选项,让用户来选择,这就需要用到简单对话框。
代码用到简单对话框模块,首先需要导入模块:
from tkinter import simpledialog # 简单对话框模块
下面就简单对话框模块的实际运用一一讲解: 作者网站:wb86.com
from tkinter import * from tkinter import simpledialog # 简单对话框模块 root=Tk() root.title('测试') a=simpledialog.SimpleDialog(root,title='请选择',text='选择喜欢的三国人物', buttons=['曹操','刘备','孙权','诸葛亮','关羽','张飞','赵云'],) # 弹出对话框 b=['曹操','刘备','孙权','诸葛亮','关羽','张飞','赵云'] a.go() # 先执行go(),下面的num方法才起作用 print(a.num) # 输出按钮的序号 print(b[a.num]) # 输出按钮的文本 root.mainloop()
运行结果:
当我们点击第一个按钮“曹操”时,会输出0,曹操
可见,按钮的序号是从0开始算起的。
创建自定义对话框很简单,用simpledialog.SimpleDialog就可以创建,参数的用法,你根据上面的代码,一看也明白,多个按钮选项,主要是通过参数buttons列表来自定义。上述代码,运行后,必须要点击其中一个选项按钮才能退出对话框,想通过右上角的X按钮关闭对话框是行不通的。
如果想通过右上角的X按钮关闭对话框,必须要再加一个参数,cancal=某值 这个值可取一个数,这个数是关闭对话框的返回值。我来取值为-1测试一下。
from tkinter import * from tkinter import simpledialog # 简单对话框模块 root=Tk() root.title('测试') a=simpledialog.SimpleDialog(root,title='请选择',text='选择喜欢的三国人物', buttons=['曹操','刘备','孙权','诸葛亮','关羽','张飞','赵云'], cancel=-1) # 弹出对话框 b=['曹操','刘备','孙权','诸葛亮','关羽','张飞','赵云'] a.go() # 先执行go(),下面的num方法才起作用 print(a.num) # 输出按钮的序号 print("对话框被关闭") if a.num == -1 else print(b[a.num]) root.mainloop()
运行后,测试成功,可以通过右角X按钮关闭对话框。 丶丌皛
askinteger有3个参数,第1个参数是标题,第2个是提示信息,第3个是可选的默认数
from tkinter import * from tkinter import simpledialog # 简单对话框模块 def popup(): a=simpledialog.askinteger('录入','请输入整数:',initialvalue=98) print(a) # 输出返回值 root=Tk() but1=Button(root,text=" 弹出 ",command=popup) but1.pack() root.mainloop()
运行结果:
由于设置了initialvalue=98,所以输入框已有一个数据98,这个对话框必须要输入整数,才有正确的整数返回值,如果你输入字母,汉字等非法字符,点OK按钮,会弹出警告信息。
你输入整数值会返回一个整数值,如果是点Cancel退出,那将返回None
有时,我会需要输入小数,这就需要浮点数对话框了。浮点数语法跟整数输入对话框完全,3个参数,2个参数必选,initialvalue可选
from tkinter import * from tkinter import simpledialog # 简单对话框模块 def popup(): a=simpledialog.askfloat('录入','请输入浮点数:',initialvalue=1.23) print(a) # 输出返回值 root=Tk() but1=Button(root,text=" 弹出 ",command=popup) but1.pack() root.mainloop()
运行结果
上面的对话框必须要输入数值,才会有正确的浮点数返回数,否则也会弹出警告提示。
如果你会举一反三,那字符串对话框就很好理解了,这个字符串对话框跟上述的2个对话框在语法上一致的。
from tkinter import * from tkinter import simpledialog # 简单对话框模块 def popup(): a=simpledialog.askstring('录入','请输入字符:',initialvalue='何老师的济亨网') print(a) # 输出返回值 root=Tk() but1=Button(root,text=" 弹出 ",command=popup) but1.pack() root.mainloop()
运行结果
点OK返回输入的字符,如果点Cancel返回None
简单对话框,到这里,就讲解完了,你会发现它的确很简单,很好了解掌握,但仔细的你,可能也发现问题,它按钮的排列位置,按钮的文本不能自定义,弹出的对话框还可以最大化,还可以调整界面尺寸大小,这种表现可不太好。
有没有办法让我们自己也可以做一个可以自定义的对话框呢,当然有办法,这就需要我们学习新知识Toplevel,下一篇文章我就来讲讲这个新组件Toplevel
来源:济亨网
本文链接:http://wb86.com/post/313.html