今天要连发俩篇了,这是一个简单的计算机窗口化界面,运用的当然还是我们的Python的Tkinter模块生成的啦。这一篇比上一篇相比,在Enter中加上了输入检验,倘若不符合标准,当然是显示不了的了。
这就必须用到三个参数:
1.validate
2.validatecommand
3.invalidatecommand
1、validate的作用是选择如何检验,我在此次练习中使用的是 ‘key’
2、validatecommand是指向检验方法,当你输入时,会通过此指向的方法进行检验
3、invalidatecommand是当validatecommand检验后不符合,返回False时,会指向此指向的方法。
此处是我的代码:
import tkinter
#创建窗口
root = tkinter.Tk()
#创建框架
frame = tkinter.Frame(root)
#摆放框架
frame.pack(padx= 10,pady = 10)
#创建变量
v1 = tkinter.StringVar()
v2 = tkinter.StringVar()
v3 = tkinter.StringVar()
#创建标签
L1 = tkinter.Label(frame,text = '简单计算器',font = '微软雅黑,30')
L2 = tkinter.Label(frame,text = '=')
#摆放标签
L1.grid(row = 0,column = 2,pady = 10,padx = 10)
L2.grid(row = 1,column = 3,padx= 10,pady = 10)
#定义筛选方法
def text(content):
return content.isdigit()
#创建输入窗口
e1 = tkinter.Entry(frame,width = 10,textvariable = v1,validate = 'key',validatecommand = (text,'%P'))
e2 = tkinter.Entry(frame,width = 10,textvariable = v2,validate = 'key',validatecommand = (text,'%P'))
e3 = tkinter.Entry(frame,width = 10,textvariable = v3,validate = 'key',validatecommand = (text,'%P'),state ='readonly')
#摆放输入
e1.grid(row = 1,column = 0,pady =10,padx = 10)
e2.grid(row = 1,column = 2,padx = 10,pady = 10)
e3.grid(row = 1,column = 4,padx = 10,pady = 10)
#定义计算方法
def add():
result = int(v1.get()) + int(v2.get())
v3.set(result)
def subtract():
result = int(v1.get()) - int(v2.get())
v3.set(result)
def ride():
result = int(v1.get()) * int(v2.get())
v3.set(result)
def division():
result = int(v1.get()) / int(v2.get())
v3.set(result)
#创建按键
b0 = tkinter.Button(frame,text = '+',command = add,bd = 5)
b1 = tkinter.Button(frame,text = '-',command = subtract,bd = 5)
b2 = tkinter.Button(frame,text = '*',command = ride,bd = 5)
b3 = tkinter.Button(frame,text = '/',command = division,bd = 5)
#摆放按键
b0.grid(row = 2,column = 0,padx = 10,pady = 10)
b1.grid(row = 2,column = 1,pady = 10)
b2.grid(row = 2,column = 2,pady = 10)
b3.grid(row = 2,column = 3,pady = 10)
#进入消息循环
root.mainloop()
注释很多,大家应该可以看得懂。下面是我执行后得到的结果:
这是刚执行后得到的结果图,现在往里面输入数据,执行加减乘除:
这是乘
这是加
这是减
这是除
好啦好啦,今天的展示就结束了,希望可以得到大家的指正。哈哈,再见,以后的更新可能会参与很多新的内容。