-calculator_CALL_MAX_DATA = 16
-
-calculator_line_points = [{"x":0,"y":0},{"x":0,"y":40}]
-calculator_screen = None
-calculator_line = None
-calculator_label = None
-calculator_one = None
-calculator_two = None
-calculator_three = None
-calculator_four = None
-calculator_five = None
-calculator_six = None
-calculator_seven = None
-calculator_eight = None
-calculator_nine = None
-calculator_start = None
-calculator_zero = None
-calculator_hash = None
-calculator_call = None
-calculator_call_btn = None
-calculator_contact = None
-calculator_contact_btn = None
-calculator_delete = None
-calculator_delete_btn = None
-
-class calculatorScreen(Screen):
- NAME = "calculator"
-
- def __init__(self):
-
- super().__init__()
- self.meta = None
- self.phone_num = ''
- self.phone_list = []
- self.button = 0
- self.timer = osTimer()
- self.timer_cb = 0
- self.count = 0
-
-
-
- def initialization(self):
- self.phone_num=''
- self.phone_list = []
- global calculator_screen ,calculator_line,calculator_label,calculator_one,calculator_two,calculator_three,calculator_four,calculator_five,calculator_six,calculator_seven,calculator_eight,calculator_nine,calculator_start,\
- calculator_zero,calculator_hash,calculator_call,calculator_call_btn,calculator_contact,calculator_contact_btn,calculator_delete,calculator_delete_btn
-
- size_x = 36 #按钮大小
- size_y = 22
- start_x = 5
- start_y = 25
-
- offset_y = 4
- if calculator_screen == None:
- calculator_screen = lv.obj()
- print("phone_screen")
- calculator_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
- # phone_line = lv.line(phone_screen)
- # phone_line.set_points(phone_line_points,2)
- # phone_line.set_pos(125,5)
- # phone_line.set_size(2,18)
- # phone_line.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
- # phone_line.add_style(style_line,0)
- calculator_label_screen = lv.obj(calculator_screen)
- calculator_label_screen.set_pos(0,0)
- calculator_label_screen.set_size(128,16)
- calculator_label_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
- print("phone_screen")
- calculator_label_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-
- calculator_label = lv.label(calculator_label_screen)
- calculator_label.set_pos(0, 0)
- calculator_label.set_size(0, 20)
- calculator_label.set_text(" ")
- calculator_label.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
-
- calculator_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-
- calculator_one = lv.img(calculator_screen)
- calculator_one.set_src("U:/static/IMAGE_NUMBER_KEY1_ICON.png")
- calculator_one.add_flag(lv.obj.FLAG.CLICKABLE)
- calculator_one.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
- calculator_one.set_pos(start_x, start_y)
- calculator_one.set_size(size_x, size_y)
-
- calculator_two = lv.img(calculator_screen)
- calculator_two.set_size(size_x, size_y)
- calculator_two.set_src("U:/static/IMAGE_NUMBER_KEY2_ICON.png")
- calculator_two.add_flag(lv.obj.FLAG.CLICKABLE)
- calculator_two.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
- calculator_two.set_pos(start_x+size_x+5*1, start_y)
-
- calculator_three = lv.img(calculator_screen)
- calculator_three.set_size(size_x, size_y)
- calculator_three.set_src("U:/static/IMAGE_NUMBER_KEY3_ICON.png")
- calculator_three.add_flag(lv.obj.FLAG.CLICKABLE)
- calculator_three.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
- calculator_three.set_pos(start_x+size_x*2+5*2, start_y)
-
- calculator_four = lv.img(calculator_screen)
- calculator_four.set_size(size_x, size_y)
- calculator_four.set_src("U:/static/IMAGE_NUMBER_KEY4_ICON.png")
- calculator_four.add_flag(lv.obj.FLAG.CLICKABLE)
- calculator_four.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
- calculator_four.set_pos(start_x, start_y+size_y+offset_y)
-
- calculator_five = lv.img(calculator_screen)
- calculator_five.set_size(size_x, size_y)
- calculator_five.set_src("U:/static/IMAGE_NUMBER_KEY5_ICON.png")
- calculator_five.add_flag(lv.obj.FLAG.CLICKABLE)
- calculator_five.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
- calculator_five.set_pos(start_x+size_x+5*1, start_y+size_y+offset_y)
-
- calculator_six = lv.img(calculator_screen)
- calculator_six.set_size(size_x, size_y)
- calculator_six.set_src("U:/static/IMAGE_NUMBER_KEY6_ICON.png")
- calculator_six.add_flag(lv.obj.FLAG.CLICKABLE)
- calculator_six.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
- calculator_six.set_pos(start_x+size_x*2+5*2, start_y+size_y+offset_y)
-
- calculator_seven = lv.img(calculator_screen)
- calculator_seven.set_size(size_x, size_y)
- calculator_seven.set_src("U:/static/IMAGE_NUMBER_KEY7_ICON.png")
- calculator_seven.add_flag(lv.obj.FLAG.CLICKABLE)
- calculator_seven.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
- calculator_seven.set_pos(start_x, start_y+size_y*2+offset_y*2)
-
- calculator_eight = lv.img(calculator_screen)
- calculator_eight.set_size(size_x, size_y)
- calculator_eight.set_src("U:/static/IMAGE_NUMBER_KEY8_ICON.png")
- calculator_eight.add_flag(lv.obj.FLAG.CLICKABLE)
- calculator_eight.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
- calculator_eight.set_pos(start_x+size_x+5*1, start_y+size_y*2+offset_y*2)
-
- calculator_nine = lv.img(calculator_screen)
- calculator_nine.set_size(size_x, size_y)
- calculator_nine.set_src("U:/static/IMAGE_NUMBER_KEY9_ICON.png")
- calculator_nine.add_flag(lv.obj.FLAG.CLICKABLE)
- calculator_nine.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
- calculator_nine.set_pos(start_x+size_x*2+5*2, start_y+size_y*2+offset_y*2)
-
- # phone_start = lv.img(phone_screen)
- # phone_start.set_size(size_x, size_y)
- # phone_start.set_src("U:/static/IMAGE_NUMBER_KEYSTAR_ICON.png")
- # phone_start.add_flag(lv.obj.FLAG.CLICKABLE)
- # phone_start.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
- # phone_start.set_pos(start_x, start_y+size_y*3)
-
- # calculator_delete = lv.img(calculator_screen)
- # calculator_delete.set_size(size_x, size_y)
- # calculator_delete.set_src("U:/static/IMAGE_BUTTON_DELKEY.png")
- # calculator_delete.add_flag(lv.obj.FLAG.CLICKABLE)
- # calculator_delete.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
- # calculator_delete.set_pos(start_x, start_y+size_y*3+offset_y*3)
-
- calculator_delete = lv.label(calculator_screen)
- calculator_delete.set_pos(start_x, start_y+size_y*3+offset_y*3)
- calculator_delete.set_size(start_x+size_x+5*1-start_x, 128-(start_y+size_y*3+offset_y*3))
- calculator_delete.set_text("/")
- calculator_delete.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
- calculator_delete.set_long_mode(lv.label.LONG.CLIP)
- calculator_delete.add_flag(lv.obj.FLAG.CLICKABLE)
- calculator_delete.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-
-
-
- calculator_zero = lv.img(calculator_screen)
- calculator_zero.set_size(size_x, size_y)
- calculator_zero.set_src("U:/static/IMAGE_NUMBER_KEY0_ICON.png")
- calculator_zero.add_flag(lv.obj.FLAG.CLICKABLE)
- calculator_zero.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
- calculator_zero.set_pos(start_x+size_x+5*1, start_y+size_y*3+offset_y*3)
-
- calculator_call = lv.label(calculator_screen)
- calculator_call.set_pos(start_x+size_x*2+5*2, start_y+size_y*3+offset_y*3)
- calculator_call.set_size(128-(start_x+size_x*2+5*2), 128-(start_y+size_y*3+offset_y*3))
- calculator_call.set_text("-")
- calculator_call.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
- calculator_call.set_long_mode(lv.label.LONG.CLIP)
- calculator_call.add_flag(lv.obj.FLAG.CLICKABLE)
- calculator_call.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
- # calculator_call = lv.img(calculator_screen)
- # calculator_call.set_size(size_x, size_y)
- # calculator_call.set_src("U:/static/IMAGE_BUTTON_DIAL.png")
- # calculator_call.add_flag(lv.obj.FLAG.CLICKABLE)
- # calculator_call.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
- # calculator_call.set_pos(start_x+size_x*2+5*2, start_y+size_y*3+offset_y*3)
-
-
-
- self.meta = calculator_screen
-
- calculator_one.add_event_cb(lambda e: EventMesh.callback_wrapper(self.one(e)),
- lv.EVENT.CLICKED, None)
- calculator_two.add_event_cb(lambda e: EventMesh.callback_wrapper(self.two(e)),
- lv.EVENT.CLICKED, None)
- calculator_three.add_event_cb(lambda e: EventMesh.callback_wrapper(self.three(e)),
- lv.EVENT.CLICKED, None)
- calculator_four.add_event_cb(lambda e: EventMesh.callback_wrapper(self.four(e)),
- lv.EVENT.CLICKED, None)
- calculator_five.add_event_cb(lambda e: EventMesh.callback_wrapper(self.five(e)),
- lv.EVENT.CLICKED, None)
- calculator_six.add_event_cb(lambda e: EventMesh.callback_wrapper(self.six(e)),
- lv.EVENT.CLICKED, None)
- calculator_seven.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)),
- lv.EVENT.CLICKED, None)
-
- calculator_seven.add_event_cb(lambda e: EventMesh.callback_wrapper(self.pressed_start(e)),
- lv.EVENT.LONG_PRESSED, None)#长按显示+
-
- calculator_seven.add_event_cb(lambda e: EventMesh.callback_wrapper(self.endpressed_start(e)),
- lv.EVENT.RELEASED, None)#释放按键
-
- calculator_eight.add_event_cb(lambda e: EventMesh.callback_wrapper(self.eight(e)),
- lv.EVENT.CLICKED, None)
- calculator_nine.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)),
- lv.EVENT.CLICKED, None)
-
- calculator_nine.add_event_cb(lambda e: EventMesh.callback_wrapper(self.pressed_start(e)),
- lv.EVENT.LONG_PRESSED, None)#长按显示+
-
- calculator_nine.add_event_cb(lambda e: EventMesh.callback_wrapper(self.nine_endpressed_start(e)),
- lv.EVENT.RELEASED, None)#释放按键
-
- # phone_zero.add_event_cb(lambda e: EventMesh.callback_wrapper(self.zero(e)),
- # lv.EVENT.CLICKED, None)
-
- calculator_zero.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)),
- lv.EVENT.CLICKED, None)#短按显示*
-
- calculator_zero.add_event_cb(lambda e: EventMesh.callback_wrapper(self.pressed_start(e)),
- lv.EVENT.LONG_PRESSED, None)#长按显示+
-
- calculator_zero.add_event_cb(lambda e: EventMesh.callback_wrapper(self.zero_endpressed_start(e)),
- lv.EVENT.RELEASED, None)#释放按键
-
- calculator_call.add_event_cb(lambda e: EventMesh.callback_wrapper(self.call(e)),
- lv.EVENT.CLICKED, None)
- # phone_contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.contact(e)),
- # lv.EVENT.CLICKED, None)
- calculator_delete.add_event_cb(lambda e: EventMesh.callback_wrapper(self.delete(e)),
- lv.EVENT.CLICKED, None)
-
- # phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)),
- # lv.EVENT.CLICKED, None)#短按显示*
-
- # phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.pressed_start(e)),
- # lv.EVENT.LONG_PRESSED, None)#长按显示+
-
- # phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.endpressed_start(e)),
- # lv.EVENT.RELEASED, None)#释放按键
-
-
- # phone_hash.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hash(e)),
- # lv.EVENT.CLICKED, None)
-
-
- self.phone_num=''
- self.calcul_num=''
- self.phone_list = []
- self.one_buf = ''
- self.two_buf = ''
- self.operator = ''
- self.result_buf = ''#计算结果
-
-
- self.count = 0
- self.show_num()
- if calculator_label != None:
- calculator_label.set_pos(0, 0)
- calculator_label.set_size(0, 0)
- calculator_label.set_text(" ")
- #phone_label.set_text(" ")
- # print("self.phone_list :{} self.phone_num:{}".format(self.phone_list,self.phone_num))
- if self.timer_cb == 0:
- self.timer_cb = 1
- # self.timer.start(1000,1,self.refresh_line)
-
-
- def refresh_line(self,e):
- return
- if self.count > 2 :
- self.count = 1
- if self.count%2 == 0:
- phone_line.clear_flag(lv.obj.FLAG.HIDDEN)
- else:
- phone_line.add_flag(lv.obj.FLAG.HIDDEN)
- self.count+=1
- def one(self,e):
- self.input_num("1")
-
- def two(self,e):
- self.input_num("2")
-
- def three(self,e):
- self.input_num(".")
- # self.input_num("3")
-
- def four(self,e):
- self.input_num("4")
-
- def five(self,e):
- self.input_num("5")
-
- def six(self,e):
- self.input_num("6")
-
- def seven(self,e):
- self.input_num("7")
-
- def eight(self,e):
- self.input_num("8")
-
- def nine(self,e):
- self.input_num("9")
-
- def zero(self,e):
- self.input_num("0")
-
- def start(self,e):
- self.button = 0
-
- def pressed_start(self,e):
- self.button = 1
- def Close(self):
- self.timer_cb = 0
- self.timer.stop()
-
- def nine_endpressed_start(self,e):
-
- if self.button == 1:#长按
- self.input_char("=")
-
- else:#短按
- self.input_num("9")
-
-
-
- def zero_endpressed_start(self,e):
-
- if self.button == 1:#长按
- self.input_char("+")
- else:#短按
- self.input_num("0")
-
-
-
- def endpressed_start(self,e):
- if self.button == 1:#长按
- self.input_char("*")
- else:#短按
- self.input_num("7")
-
-
- def hash(self,e):
-
- self.calculator_fun("#")
-
- def is_all_zero(self,lst):
- return all(element == 0 for element in lst)
-
- def input_num(self,msg):#输入数字
- if msg == 'delete':
- if len(self.result_buf) == 0:
- if self.one_buf != '':
- if self.operator != '':
- if self.two_buf != '':
- self.phone_list = list(self.two_buf)
- self.phone_list.pop()
- self.two_buf = ''.join(self.phone_list)
- print("two_buf!!!")
- else:
- self.phone_list = list(self.operator)
- self.phone_list.pop()
- self.operator = ''.join(self.phone_list)
- print("self.operator!!!")
- else:
- self.phone_list = list(self.one_buf)
- self.phone_list.pop()
- self.one_buf = ''.join(self.phone_list)
- print("self.one_buf!!!")
- self.show_result()#显示计算结果以及输入结果
- return
- global calculator_label
- print("input_num",msg)
- if len(self.result_buf) > 0:
- self.result_buf = ''
- self.two_buf = ''
- self.one_buf = ''
-
- if self.one_buf == '':#第一个数字为空
- if msg == '.':#如果第一个数据为空并且输入的第一个数字是.就直接置0.开始
- self.one_buf = "0."
- else:
- self.one_buf = self.one_buf+msg
- else:
- if self.operator == '':#没有特殊字符 + - / * 一直会将数字添加到数字1中 否则添加到数字2中
- if self.one_buf.find('.') == -1:
- if len(self.one_buf) <= 10 and len(self.one_buf) > 0:#第二个数据超过10个数据不让输入 0
- if len(self.one_buf) == 1 and self.one_buf == '0' and msg != '.':
- self.one_buf = msg
- else:
- self.one_buf = self.one_buf+msg#还是第一个数据继续加 0
- pass
- else:
- if len(self.one_buf) > 10:
- print("大于是10位数字")
- pass
- else:
- if msg == '.':
- self.one_buf = '0.'
- else:
- self.one_buf = self.one_buf+msg#还是第一个数据继续加 0
- pass
- else:
- if self.one_buf.find('.') != -1:#找到一个点如果还是点的话不让点
- if msg != '.':
- if len(self.one_buf) <= 10:
- self.one_buf = self.one_buf+msg#还是第一个数据继续加 0
-
- else:
-
- if self.two_buf.find('.') == -1:
- if len(self.two_buf) <= 10 and len(self.two_buf) > 0:#第二个数据超过10个数据不让输入 0
- if len(self.two_buf) == 1 and self.two_buf == '0' and msg != '.':
- self.two_buf = msg
- else:
- self.two_buf = self.two_buf+msg#还是第一个数据继续加 0
- pass
- else:
- if len(self.two_buf) > 10:
- pass
- else:
- if msg == '.':
- self.two_buf = '0.'
- else:
- self.two_buf = self.two_buf+msg#还是第一个数据继续加 0
- pass
- else:
- if self.two_buf.find('.') != -1:
- if msg != '.':
- if len(self.two_buf) <= 10:
- self.two_buf = self.two_buf+msg#还是第一个数据继续加 0
-
-
- self.show_result()#显示计算结果以及输入结果
- pass
-
-
- def input_char(self,msg):#输入字符
-
- if self.one_buf != '':
- if self.one_buf.find(".") != -1:
- tmp = self.one_buf.split(".")[1]
- if len(tmp) == 0:
- self.one_buf = self.one_buf.split('.')[0]
- if self.two_buf != '':
- if self.two_buf.find(".") != -1:
- tmp = self.two_buf.split(".")[1]
- if len(tmp) == 0:
- self.two_buf = self.two_buf.split('.')[0]
-
- global calculator_label
- if len(self.two_buf) != 0 and float(self.two_buf) == 0:#0.000
- if self.operator == '/' and (msg == '/' or msg == '=' or msg == '*'or msg == '+' or msg =='-'):#如果第二个数据为0并且符号是除号就提示除数不为0
- print("除数不可以为0")
- self.operator = ''
- self.one_buf = ''
- self.two_buf = ''
- calculator_label.set_text("除数不可以为0")
- return
- else:
- print("除数不为0")
- self.show_result()
-
- self.result_buf = ''
- print("input_char",msg)
- if self.one_buf != '':#只有第一个数据不为空的时候才可以输入特殊字符
- if msg == "+":#加
- if self.one_buf != '':
- if self.operator != '':#90
- print("operator")
- if self.two_buf != '':#90+90 计算结果 -0.9
-
- if self.one_buf.find('.') != -1:
- if self.one_buf.find('e') == -1:#1.2e
- if int(self.one_buf.split(".")[1]) == 0:
- self.one_buf = self.one_buf.split('.')[0]
-
- if self.two_buf.find('.') != -1:
- if self.two_buf.find('e') == -1:#1.2e
- if int(self.two_buf.split('.')[1]) == 0:
- self.two_buf = self.two_buf.split('.')[0]
-
- str_sum = ''
- # if self.one_buf.find('e') != -1:#1.2e
- # tmp1 = (self.one_buf.split('e')[0])#2.1717041952680391897126070275863e-15
- # tmp2 = (self.one_buf.split('e')[1])
- # if len(tmp2) > 0:
- # self.result_buf = str(eval(tmp1 + "*"+"10**"+tmp2))
- # else:
- # self.result_buf = str(eval(tmp1 + "*"+"10**"+"0"))
- # pass
- # pass
- # else:
- str_sum = (self.one_buf.split()[0])+self.operator+(self.two_buf.split()[0])
- self.result_buf = str(eval(str_sum))
- # pass
-
- print("str_sum",str_sum,self.result_buf)
- if self.result_buf.find('e') == -1:
- if self.result_buf.find('.') != -1:#有小数点
- print("input_dot",self.result_buf)
- if int(self.result_buf.split(".")[1]) == 0:#小数点后面全是0 就取整数
- self.result_buf = (self.result_buf.split(".")[0])
-
- if len(self.result_buf) > 14:#99978654.087766666
- tmp = str(self.result_buf[:14])
- self.result_buf = tmp
-
- self.one_buf = str(self.result_buf)
- self.two_buf = ''
- self.operator = ''
- self.show_result()#显示计算结果以及输入结果
- else:
- if self.operator != '+':#有+就不需要再显示+
- self.operator = msg#90 没有特殊字符则加上不计算结果
- if self.one_buf.split()[0] == 0:#如果数字是0.就显示0负数不在内
- self.one_buf = "0"
- self.show_result()#显示计算结果以及输入结果
- else:
- print("operator !!!!!")
- self.operator = msg
- self.show_result()#显示计算结果以及输入结果
- pass
- elif msg == '-':#减
- if self.one_buf != '':
- if self.operator != '':#90
- print("operator!!!!!!!!!!!!")
- if self.two_buf != '':#90+90 计算结果 -0.9
- if self.one_buf.find('.') != -1:
- if self.one_buf.find('e') == -1:#1.2e
- if int(self.one_buf.split(".")[1]) == 0:
- self.one_buf = self.one_buf.split('.')[0]
-
- if self.two_buf.find('.') != -1:
- if self.two_buf.find('e') == -1:#1.2e
- if int(self.two_buf.split('.')[1]) == 0:
- self.two_buf = self.two_buf.split('.')[0]
- str_sum = ''
- # if self.one_buf.find('e') != -1:#1.2e
- # tmp1 = (self.one_buf.split('e')[0])#2.1717041952680391897126070275863e-15
- # tmp2 = (self.one_buf.split('e')[1])
- # if len(tmp2) > 0:
- # self.result_buf = str(eval(tmp1 + "*"+"10**"+tmp2))
- # else:
- # self.result_buf = str(eval(tmp1 + "*"+"10**"+"0"))
- # pass
- # pass
- # else:
- str_sum = (self.one_buf.split()[0])+self.operator+(self.two_buf.split()[0])
- self.result_buf = str(eval(str_sum))
-
- print("str_sum",str_sum,self.result_buf)
- if self.result_buf.find('e') == -1:
- if self.result_buf.find('.') != -1:#有小数点
- print("input_dot",self.result_buf)
- if int(self.result_buf.split(".")[1]) == 0:#小数点后面全是0 就取整数
- self.result_buf = (self.result_buf.split(".")[0])
-
- if len(self.result_buf) > 14:#99978654.087766666
- tmp = str(self.result_buf[:14])
- self.result_buf = tmp
-
- self.one_buf = str(self.result_buf)
- self.two_buf = ''
- self.operator = ''
- self.show_result()#显示计算结果以及输入结果
- else:
- if self.operator != '-':#有+就不需要再显示+
- self.operator = msg#90 没有特殊字符则加上不计算结果
- if self.one_buf.split()[0] == 0:#如果数字是0.就显示0负数不在内
- self.one_buf = "0"
- self.show_result()#显示计算结果以及输入结果
- else:
- print("operator ---------")
- self.operator = msg
- self.show_result()#显示计算结果以及输入结果
- pass
- elif msg == '*':#乘
- if self.one_buf != '':
- if self.operator != '':#90
- print("operator====***********")
- if self.two_buf != '':#90+90 计算结果 -0.9
- if self.one_buf.find('.') != -1:
- if self.one_buf.find('e') == -1:#1.2e
- if int(self.one_buf.split(".")[1]) == 0:
- self.one_buf = self.one_buf.split('.')[0]
-
- if self.two_buf.find('.') != -1:
- if self.two_buf.find('e') == -1:#1.2e
- if int(self.two_buf.split('.')[1]) == 0:
- self.two_buf = self.two_buf.split('.')[0]
-
- str_sum = ''
- # if self.one_buf.find('e') != -1:#1.2e
- # tmp1 = (self.one_buf.split('e')[0])#2.1717041952680391897126070275863e-15
- # tmp2 = (self.one_buf.split('e')[1])
- # if len(tmp2) > 0:
- # self.result_buf = str(eval(tmp1 + "*"+"10**"+tmp2))
- # else:
- # self.result_buf = str(eval(tmp1 + "*"+"10**"+"0"))
- # pass
- # pass
- # else:
- str_sum = (self.one_buf.split()[0])+self.operator+(self.two_buf.split()[0])
- self.result_buf = str(eval(str_sum))
- # pass
-
- print("str_sum",str_sum,self.result_buf)
- if self.result_buf.find('e') == -1:#有e
- if self.result_buf.find('.') != -1:#有小数点
- print("input_dot",self.result_buf)
- if int(self.result_buf.split(".")[1]) == 0:#小数点后面全是0 就取整数
- self.result_buf = (self.result_buf.split(".")[0])
-
- if len(self.result_buf) > 14:#99978654.087766666
- tmp = str(self.result_buf[:14])
- self.result_buf = tmp
-
- self.one_buf = str(self.result_buf)
- self.two_buf = ''
- self.operator = ''
- self.show_result()#显示计算结果以及输入结果
- else:
- if self.operator != '*':#有+就不需要再显示+
- self.operator = msg#90 没有特殊字符则加上不计算结果
- if self.one_buf.split()[0] == 0:#如果数字是0.就显示0负数不在内
- self.one_buf = "0"
- self.show_result()#显示计算结果以及输入结果
- else:
- print("operator **********")
- self.operator = msg
- self.show_result()#显示计算结果以及输入结果
- pass
-
- elif msg == '/':#除
- if self.one_buf != '':
- if self.operator != '':#90
- print("operator ==== //////////",self.two_buf)
- if self.two_buf != '':#90+90 计算结果 -0.9
- if float(self.two_buf) != 0:
- if self.one_buf.find('.') != -1:
- if self.one_buf.find('e') == -1:#1.2e
- if int(self.one_buf.split(".")[1]) == 0:
- self.one_buf = self.one_buf.split('.')[0]
-
- if self.two_buf.find('.') != -1:
- if self.two_buf.find('e') == -1:#1.2e
- if int(self.two_buf.split('.')[1]) == 0:
- self.two_buf = self.two_buf.split('.')[0]
-
- str_sum = ''
- # if self.one_buf.find('e') != -1:#1.2e
-
- # tmp = (self.one_buf.split('e')[0])
-
- # str_sum = tmp + self.operator + self.two_buf
- # self.result_buf = str(eval(str_sum))+'e'
- # pass
- # else:
- str_sum = (self.one_buf.split()[0])+self.operator+(self.two_buf.split()[0])
- self.result_buf = str(eval(str_sum))
- # pass
-
- print("str_sum",str_sum,self.result_buf)
- if self.result_buf.find('e') == -1:#有小数点
- if self.result_buf.find('.') != -1:#有小数点
- print("input_dot",self.result_buf)
- if int(self.result_buf.split(".")[1]) == 0:#小数点后面全是0 就取整数
- self.result_buf = (self.result_buf.split(".")[0])
-
- # if len(self.result_buf) > 14:#99978654.087766666
- # tmp = str(self.result_buf[:14])
- # self.result_buf = tmp
-
- self.one_buf = str(self.result_buf)
- self.two_buf = ''
- self.operator = ''
- self.show_result()#显示计算结果以及输入结果
- else:
- print("除数不为0")
- else:
- if self.operator != '/':#有+就不需要再显示+
- self.operator = msg#90 没有特殊字符则加上不计算结果
- if self.one_buf.split()[0] == 0:#如果数字是0.就显示0负数不在内
- self.one_buf = "0"
- self.show_result()#显示计算结果以及输入结果
- else:
- print("operator ////////////////////")
- self.operator = msg
- self.show_result()#显示计算结果以及输入结果
- pass
-
- pass
-
- elif msg == '=':#等于
- if self.one_buf != '':
- if self.operator != '':
- print("operator ===========")
- if self.two_buf != '':#90+90 计算结果 -0.9
- if float(self.two_buf) != 0:
- if self.one_buf.find('.') != -1:
- if self.one_buf.find('e') == -1:#1.2e
- if int(self.one_buf.split(".")[1]) == 0:
- self.one_buf = self.one_buf.split('.')[0]
-
- if self.two_buf.find('.') != -1:
- if self.two_buf.find('e') == -1:#1.2e
- if int(self.two_buf.split('.')[1]) == 0:
- self.two_buf = self.two_buf.split('.')[0]
-
- str_sum = ''
- # if self.one_buf.find('e') != -1:#1.2e
- # tmp = (self.one_buf.split('e')[0])
- # str_sum = tmp + self.operator + self.two_buf
- # self.result_buf = str(eval(str_sum))+'e'
- # pass
- # else:
- str_sum = (self.one_buf.split()[0])+self.operator+(self.two_buf.split()[0])
- self.result_buf = str(eval(str_sum))
- # pass
-
- print("str_sum",str_sum,self.result_buf)
- if self.result_buf.find('e') == -1:#有小数点
- if self.result_buf.find('.') != -1:#有小数点
- print("input_dot",self.result_buf)
- if int(self.result_buf.split(".")[1]) == 0:#小数点后面全是0 就取整数
- self.result_buf = (self.result_buf.split(".")[0])
-
- if len(self.result_buf) > 14:#99978654.087766666
- tmp = str(self.result_buf[:14])
- self.result_buf = tmp
-
- self.one_buf = str(self.result_buf)
- self.two_buf = ''
- self.operator = ''
- self.show_result()#显示计算结果以及输入结果
- else:
- if self.operator != '=':#有=就不需要再显示+ 90
- self.operator = '' #90 没有特殊字符则加上不计算结果
- self.two_buf = ''
- self.show_result()#显示计算结果以及输入结果
-
- pass
- else:
- self.operator = ''
- self.two_buf = ''
- self.show_result()#显示计算结果以及输入结果 只显示第一个数据的内容
-
- pass
- else:
- #无效的数据
- pass
-
-
-
- def show_result(self):
- print("self.one_buf ",self.one_buf,self.two_buf,self.operator)
- global calculator_label
- tmp = str(self.one_buf)+str(self.operator)+str(self.two_buf)
- label_size = len(tmp)*16
- calculator_label.set_pos(0, 0)
- calculator_label.set_size(128, 16)
- calculator_label.set_text(tmp)
-
- def calculator_fun(self,msg):
- result = 0
- if len(self.phone_num) >= calculator_CALL_MAX_DATA:#限制拨号数量20个数字
- #self.phone_list.pop(0)
- return
- if len(self.phone_num) != 0:
- if len(self.calcul_num) > 0:
- self.calcul_num = ''
- if msg == "+" or msg == '-' or msg == 'X' or msg == '/':#如果是计算完结果再按特殊字符就让他继续加
- print("不包含特殊字符1")
-
- self.phone_list.append(msg)
- self.phone_num = ''.join(self.phone_list)
- self.show_num()
- else:#
- print("不包含特殊字符2",msg)
- if msg == '=':
- self.show_num()
- else:
-
- self.phone_num = ''
- self.phone_list = []
- self.phone_list.append(msg)
- self.phone_num = ''.join(self.phone_list)
- self.show_num()
-
- else:
-
-
-
- if self.phone_num.find('/') != -1 or self.phone_num.find('+') != -1 or self.phone_num.find('x') != -1 or self.phone_num.find('-') != -1:
-
-
- tmp_2 = ''
- tmp_3 = ''
- state1 = 0
- state2 = 0
- state3 = 0
- tmp_1 = ''
- tmp = ''
- data1 = 0
- data2 = 0
-
- if self.phone_num.find('+') != -1:#加运算
- if (self.phone_num.split('+')[0]).find('.') == -1:#还没有输入小数点 0.00
- tmp = self.phone_num.split('+')[0]
- tmp = float(tmp.split()[0])
-
-
-
- pass
-
- data1 = float(self.phone_num.split('+')[0])
-
- if len(self.phone_num.split('+')[1]) > 0 and (msg == '+' or msg =='='):#计算结果
- # tmp = self.phone_num.split('+')[0]
- # data1 = float(tmp.split()[0])
- # tmp2 = self.phone_num.split('+')[1]
- # data2 = float(tmp2.split()[0])
- # if self.phone_num.split('+')[0].find('.') == -1:
- # if int(data2) == 0:
- # data1 = int(data1)
-
- # if self.phone_num.split('+')[1].find('.') == -1:
- # if int(data2) == 0:
- # data2 = int(data2)
- if self.phone_num.find('e') != -1:
- if (self.phone_num.split('+')[0]).split('e') != -1 or (self.phone_num.split('+')[1]).split('e') != -1:
- if (self.phone_num.split('+')[0]).split('e') != -1 and (self.phone_num.split('+')[1]).split('e') != -1:
- self.phone_num = "2.71828182+2.71828182"
- elif (self.phone_num.split('+')[0]).split('e') != -1:
- self.phone_num = self.phone_num.split('+')[0] +"2.71828182"
- elif (self.phone_num.split('+')[1]).split('e') != -1:
- self.phone_num = "2.71828182"+ self.phone_num.split('+')[1]
-
- sum = eval(self.phone_num)
-
- result = sum
- print("data1",data1,data2,result,sum)
- self.calcul_num = str(result)
- self.calaulator_results()
-
- self.phone_num = self.calcul_num
- self.phone_list = list(self.phone_num)
- print("加数====",result)
- else:
- if msg == '-' or msg == '/' or msg == 'X':
- self.phone_list.pop()
- self.phone_list.append(msg)
- self.phone_num = ''.join(self.phone_list)
- self.show_num()
- print("减数")
- else:
- if msg != '=' and msg != '+':
- self.phone_list.append(msg)
- self.phone_num = ''.join(self.phone_list)
- self.show_num()
- else:
- result = data1
- result_tmp = str(result)
- if result_tmp.find('.') != -1:
- tmp_zero = int(result_tmp.split('.')[1])
- if tmp_zero == 0:
- result = result_tmp.split('.')[0]
- print("data1!!!!!!!!!!",data1,data2,result)
- self.calcul_num = str(result)
- self.calaulator_results()
- self.phone_num = self.calcul_num
- self.phone_list = list(self.phone_num)
- print("减数")
- print("加数")
-
- if self.phone_num.find('-') != -1:#减运算
- data1 = float(self.phone_num.split('-')[0])
- if len(self.phone_num.split('-')[1]) > 0 and (msg == '-' or msg =='='):#计算结果
- data2 = float(self.phone_num.split('-')[1])
- # if self.phone_num.split('-')[0].find('.') == -1:
- # if int(data1) == 0:
- # data1 = int(data1)
-
- # if self.phone_num.split('-')[1].find('.') == -1:
- # if int(data2.slpit('.')[1]) == 0:
- # data2 = int(data2)
- result = data1-data2
- print("data1222222222222",data1,data2,result)
- self.calcul_num = str(result)
- self.calaulator_results()
- self.phone_num = self.calcul_num
- self.phone_list = list(self.phone_num)
- else:
- if msg == '+' or msg == '/' or msg == 'X':
- self.phone_list.pop()
- self.phone_list.append(msg)
- self.phone_num = ''.join(self.phone_list)
- self.show_num()
- print("减数")
- else:
- if msg != '=' and msg != '-':
- self.phone_list.append(msg)
- self.phone_num = ''.join(self.phone_list)
- self.show_num()
- else:
- # if self.phone_num.split('-')[1].find('.') == -1:
- # if int(data1.slpit('.')[1]) == 0:
- # data1 = int(data1)
- result = data1
- result_tmp = str(result)
- if result_tmp.find('.') != -1:
- tmp_zero = int(result_tmp.split('.')[1])
- if tmp_zero == 0:
- result = result_tmp.split('.')[0]
- print("data333333",data1)
- self.calcul_num = str(result)
- self.calaulator_results()
- self.phone_num = self.calcul_num
- self.phone_list = list(self.phone_num)
-
-
- if self.phone_num.find('X') != -1:#乘运算
- data1 = float(self.phone_num.split('X')[0])
- if len(self.phone_num.split('X')[1]) > 0 and (msg == 'X' or msg =='='):#计算结果
-
- data2 = float(self.phone_num.split('X')[1])
- # if self.phone_num.split('X')[0].find('.') == -1:
- # if int(data1.slpit('.')[1]) == 0:
- # data1 = int(data1)
-
- # if self.phone_num.split('X')[1].find('.') == -1:
- # if int(self.phone_num.split('X')[1].find('.').slpit('.')[1]) == 0:
- # data2 = int(data2)
-
- result = data1*data2
- print("data44444",data1,data2)
- self.calcul_num = str(result)
- self.calaulator_results()
- self.phone_num = self.calcul_num
- self.phone_list = list(self.phone_num)
- print("乘数====",result)
- else:
- if msg == '+' or msg == '/' or msg == '-':
- self.phone_list.pop()
- self.phone_list.append(msg)
- self.phone_num = ''.join(self.phone_list)
- self.show_num()
- print("乘数")
- else:
- if msg != '=' and msg != 'X':
- self.phone_list.append(msg)
- self.phone_num = ''.join(self.phone_list)
- self.show_num()
- else:
- # if self.phone_num.split('X')[0].find('.') == -1:
- # if (self.phone_num.split('X')[1].find('.') == -1:)
- result = data1
- result_tmp = str(result)
- if result_tmp.find('.') != -1:
- tmp_zero = int(result_tmp.split('.')[1])
- if tmp_zero == 0:
- result = result_tmp.split('.')[0]
- print("data5555555",data1,data2)
- self.calcul_num = str(result)
- self.calaulator_results()
- self.phone_num = self.calcul_num
- self.phone_list = list(self.phone_num)
-
-
- if self.phone_num.find('/') != -1:#除运算
-
- tmp = self.phone_num.split('/')[0]
- tmp_1 = self.phone_num.split('/')[1]
- if len(tmp_1) > 0 and (msg == '/' or msg == '='):
- if tmp_1.find('.') != -1:
- state1 = int(tmp_1.split('.')[0])#0.009 10:00
- state2 = int(tmp_1.split('.')[1])#0.009
-
- else:
- state1 = int(tmp_1) #10
-
- print("state3",state1,state2,state3,tmp_1)
- if (state1 == 0 and state2 == 0):
- print("除数不可以为0")
- else:
- data1 = float(self.phone_num.split('/')[0])
- data2 = 0
- # if data1.find('.') == -1:
- # if int(data1.slpit('.')[1]) == 0:
- # data1 = int(data1)
-
- # if data2.find('.') == -1:
- # if int(data2.slpit('.')[1]) == 0:
- # data2 = int(data2)
-
- if len(self.phone_num.split('/')[1]) > 0:
- data2 = float(self.phone_num.split('/')[1])
- if data2 != 0:
- result = data1/data2
- else:
- result = data1
- print("data6666666",data1,data2)
-
- result_tmp = str(result)
- if result_tmp.find('.') != -1:
- tmp_zero = int(result_tmp.split('.')[1])
- if tmp_zero == 0:
- result = result_tmp.split('.')[0]
- else:
- pass
- self.calcul_num = str(result)
- self.calaulator_results()
- self.phone_num = self.calcul_num
- self.phone_list = list(self.phone_num)
- else:
- if msg == '+' or msg == 'X' or msg == '-':
- self.phone_list.pop()
- self.phone_list.append(msg)
- self.phone_num = ''.join(self.phone_list)
- self.show_num()
- print("减数")
- else:
- if msg != '=' and msg != '/':
- self.phone_list.append(msg)
- self.phone_num = ''.join(self.phone_list)
- self.show_num()
- else:
- result = float(tmp)
- self.calcul_num = str(result)
- print("data7777777777",result)
- self.calaulator_results()
- self.phone_num = self.calcul_num
- self.phone_list = list(self.phone_num)
- print("除数没有数字")
- else:
-
-
- if msg == '=':
- self.show_num()
- pass
- else:
- if msg == "+" and msg == '-' and msg == 'X' and msg == '/':#如果是计算完结果再按特殊字符就让他继续加
- print("不包含特殊字符")
- self.calcul_num = ''
- self.phone_list.append(msg)
- self.phone_num = ''.join(self.phone_list)
- self.show_num()
- elif msg == ".":
- if self.phone_num.find('.') == -1:#还没有输入小数点
- self.phone_num = '0.'
- self.phone_list = list(self.phone_num)
- self.show_num()
- pass
- else:#
- print("不包含特殊字符")
- if len(self.calcul_num) > 0:#表示已计算了一次结果 全部置0
- self.phone_num = ''
- self.phone_list = []
- self.calcul_num = ''
-
- self.phone_list.append(msg)
- self.phone_num = ''.join(self.phone_list)
- self.show_num()
-
- else:
- if msg != "+" and msg != '-' and msg != 'X' and msg != '/':
- print("数组为0时")
- self.phone_list.append(msg)
- self.phone_num = ''.join(self.phone_list)
- self.show_num()
- pass
-
- def delete(self,e):
- self.input_char("/")
- # if len(self.phone_list) != 0:
- # self.phone_list.pop()
- # self.phone_num = ''.join(self.phone_list)
- # self.show_num()
-
- def contact(self,e):
- EventMesh.publish("load_screen", {"screen": "contacts"})
-
- def call(self,e):
- self.input_char("-")
-
- def show_num(self):
- print("self.phone_num ",self.phone_num,self.phone_list)
- pass
- # global calculator_label
- # calculator_label.set_pos(0, 5)
- # calculator_label.set_size(128, 20)
- # calculator_label.set_text(self.phone_num)
-
- def calaulator_results(self):#计算结果显示
- pass
-
-
- def lcd_on(self):
- if self.timer_cb != 0:
- self.timer_cb = 0
- self.timer.start(1000,1,self.refresh_line)
-
- def lcd_off(self):
- self.timer_cb = 1
- self.timer.stop()
-
-
- def done_return(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
-
- def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
-
- def btn8_press(self):
- EventMesh.publish("watch_top_show")
- EventMesh.publish("load_screen", {"screen": "main_menu"})
-
rrestor_confirm_n_screen = None
rrestor_confirm_n_screen_label = None