Tkinter 计算器第一代

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Kompany4/article/details/73135627
from tkinter import *

master = Tk()
master.title('第一代计算器')
frame = Frame(master)
frame.pack(padx=10, pady=10)

v1 = StringVar()
v2 = StringVar()
v3 = StringVar()

def test(content):
        
        
	return content.isdigit()
	
   	
testCMD = master.register(test)


###昨天调试运行出现了'Nonetype‘这个错误,经过查看文档以及网上搜索发现原来,.grid以及.pack返回结果都是None所以下面e1以及e2这些在赋值不能带上.grid否则在commond中函数调用会报错


e1 = Entry(frame, textvariable=v1, validate="key",\
           validatecommand=(testCMD, '%P'))
e1.grid(row=0, column=0)

Label(frame,text='+').grid(row=0,column=1)

e2 = Entry(frame, textvariable=v2, validate="key",\
           validatecommand=(testCMD, '%P'))
e2.grid(row=0, column=2)

Label(frame,text='=').grid(row=0,column=3)

e3 = Entry(frame, textvariable=v3, state='readonly')

e3.grid(row=0,column=4)

def calc():
	result = int(v1.get()) + int(v2.get())
	v3.set(str(result))

def clear():
	###在e2如果赋值带上.grid()会报错以为返回值为None
        v1.set("")
        v2.set("")
        v3.set("")



Button(frame,text="计算结果",command=calc).grid(row=1,column=2,pady=5)	
Button(frame,text="C",command=clear).grid(row=1,column=3,pady=5)           
mainloop()

通过这次编写知道了如何处理错误,出现Nonetype就应该考虑这个是不是返回值为None

在以后出现的错误中不会再慌不知道如何修改错误,应该仔细查看各个函数方法的返回值不是直接上来就用,要不错误会满天飞

猜你喜欢

转载自blog.csdn.net/Kompany4/article/details/73135627