定义 text_print
函数,当按钮被点击时输入内容,当按钮“=”被点击的时候计算结果:
def text_print(x): #函数按钮输入算式
global textchange,equal_is #声明全局变量
if x!=‘=’:
if x==‘←’:
a=str(textchange)[0:-1]
textchange=a #退格
elif x==‘C’:
textchange=‘’ #清空
else:
textchange=str(textchange)+str(x) #输入
la.configure(text=textchange)
show_is()
equal_is=False #判断格式有无错误
if x==‘=’:
text_equal() #计算结果
show_is
用于判断格式有无错误:
def show_is(): #显示框内容
global textchange #声明全局变量
if textchange!=‘’:
try:
textshow=eval(textchange)
except (SyntaxError,TypeError,NameError):
lab.configure(text=‘错误’) #如果出错了,则显示“错误”
else:
lab.configure(text=textshow) #如果没有出错,则显示结果
else:
lab.configure(text=‘’) #如果输入框为空,那么清空显示框
text_equal
是计算结果的函数:
def text_equal(event=None): #函数计算结果并上到输入框
global textchange,equal_is #声明全局变量
if lab[‘text’]!=‘错误’ and equal_is==False:
textchange=lab[‘text’] #无格式错误时,计算结果
la.configure(text=textchange) #输入框显示结果
lab.configure(text=‘’) #清空显示框
equal_is=True
这里详细说明一下 equal_is
的作用:
因为计算了结果后显示框会清空,为了防止二次计算导致输入框也跟着清空,我们需要判断是否已经计算过结果,这时就用到变量 equal_is
。
当输入内容时,equal_is
变为 True
,计算结果后,equal_is
变为 False
,如果 equal_is == True
,则不计算结果。
我设置的键盘按键及其对应输入内容:
| 输入内容 | 对应按键 |
| — | — |
| 0~9 | 0~9 |
| + | + |
| - | - |
| * | * |
| / | / |
| 退格 | BackSpace |
| 清空 | Delete |