当前位置:首页 » tkinter » 正文

tkinter的简单对话框,不简单

导入简单对话框模块

我们在编程中,常常需要提供一个对话框,让用户可以自行输入字符、数值,或者提供几个选项,让用户来选择,这就需要用到简单对话框。

代码用到简单对话框模块,首先需要导入模块:

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()

运行结果:

1.JPG

当我们点击第一个按钮“曹操”时,会输出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

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()

运行结果:

2.JPG

由于设置了initialvalue=98,所以输入框已有一个数据98,这个对话框必须要输入整数,才有正确的整数返回值,如果你输入字母,汉字等非法字符,点OK按钮,会弹出警告信息。

3.JPG

你输入整数值会返回一个整数值,如果是点Cancel退出,那将返回None

输入浮点数对话框 askfloat

有时,我会需要输入小数,这就需要浮点数对话框了。浮点数语法跟整数输入对话框完全,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()

运行结果

4.JPG

上面的对话框必须要输入数值,才会有正确的浮点数返回数,否则也会弹出警告提示。

输入字符串对话框 askstring

     如果你会举一反三,那字符串对话框就很好理解了,这个字符串对话框跟上述的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()

运行结果

5.JPG

点OK返回输入的字符,如果点Cancel返回None

 

简单对话框,到这里,就讲解完了,你会发现它的确很简单,很好了解掌握,但仔细的你,可能也发现问题,它按钮的排列位置,按钮的文本不能自定义,弹出的对话框还可以最大化,还可以调整界面尺寸大小,这种表现可不太好。

有没有办法让我们自己也可以做一个可以自定义的对话框呢,当然有办法,这就需要我们学习新知识Toplevel,下一篇文章我就来讲讲这个新组件Toplevel

 


来源:济亨网

本文链接:http://wb98.com/post/313.html

    << 上一篇 下一篇 >>

    湘公网安备 43011102000514号 - 湘ICP备08100508号