本文实例为大家分享了python3.5仿微软计算器的具体代码,供大家参考,具体内容如下
from tkinter import * from math import * root = Tk() root.title("计算器") root.geometry("1200x260+0+0") def come(event): event.widget["background"]= "orange"#event的widget方法,恩,恩,值得看看 def go(event): event.widget["background"] = "#%02x%02x%02x" % (240,240,240)#实现RGB和十六进制的换算 def num1(): text.insert(END,1) def num2(): text.insert(END,2) def num3(): text.insert(END,3) def num4(): text.insert(END,4) def num5(): text.insert(END,5) def num6(): text.insert(END,6) def num7(): text.insert(END,7) def num8(): text.insert(END,8) def num9(): text.insert(END,9) def num0(): if text.get(END) =="/": messagebox.showinfo(title ="除数不能为零") else: text.insert(END,0) def dot_it(): text.insert(END,".") def Addnum(): if text.get(1.0,END): text.insert(END,"+") def minus_num(): if text.get(1.0,END): text.insert(END,"-") def times_num(): if text.get(1.0,END): text.insert(END,"*") def div_num(): if text.get(1.0,END): text.insert(END,"/") def equal_it():#可以使用text的search方法排除除法和开根号的例外 global list_power,x,list_log,xylog se = text.get(1.0,END) if se: if "/" in text.get(1.0,END): div_pos = text.search("/",1.0,END) pos = div_pos.split(".") text_row = pos[0] text_column = pos[1] newpos = "%d.%d" % (int(text_row),int(text_column)+1) cool = eval(text.get(newpos,END)) if cool == 0: text_alert.insert(1.0,"被除数不能为零") return else: se = eval(se) text.delete(1.0,END) text.insert(1.0,se) elif xypower==True:#通过设全局变量为哨兵,看函数是否被调用 list_power.append(eval(se)) text.delete(1.0,END) text.insert(1.0,pow(list_power[0],list_power[1])) list_power = [] elif xylog ==True: list_log.append(eval(se)) text.delete(1.0,END) text.insert(1.0,log(list_log[1],list_log[0])) list_log = [] else: se = eval(se) text.delete(1.0,END) text.insert(1.0,se) else: text.delete(1.0,END) def negative(): text.insert(END,"-") def Square_root(): if eval(text.get(1.0,END))>=0: rootit =sqrt(eval(text.get(1.0,END))) text.delete(1.0,END) text.insert(1.0,rootit) def Per(): if text.get(1.0,END): num = eval(text.get(1.0,END)) text.insert(END,"%") newnum = num*0.01 text.delete(1.0,END) text.insert(1.0,newnum) def Reci_num(): #text.get(1.0,"%s-2c" % END).strip("\n") #if text.get(1.0,"%s-1c" % END).isdigit(): # if type(aa)==type(bb) 可以用来判断数据类型 # if type(aa)==type(1) #if type(aa)==type("我") #if type(aa)==type(3.14) if eval(text.get(1.0,END))!=0: num = eval(text.get(1.0,END).strip("\n")) num = 1/num text.delete(1.0,END) text.insert(1.0,num) else: text_alert.insert(1.0,"零不能求倒数") def C(): global memorylist,list_power,list_log# global的用法 text.delete(1.0,END) text_alert.delete(1.0,END) memorylist = [] list_power = [] list_log =[] def CE(): text.delete(1.0,END) text_alert.delete(1.0,END) def delete_onechar(): text.delete("%s-1c" % INSERT,INSERT)#字符index的移动 def Mc(): global memorylist memorylist = [] def Ms(): global memorylist memorylist.append(eval(text.get(1.0,END))) text.delete(1.0,END) def M_plus(): global memorylist global m_plus m_plus = True memorylist.append(eval(text.get(1.0,END))) text.delete(1.0,END) return True def M_minus(): global memorylist global m_minus m_minus =True memorylist.append(eval(text.get(1.0,END))) text.delete(1.0,END) return True def Mr(): global memorylist global m_plus global m_minus text.delete(1.0,END) if m_plus == True: sum1 =0 for i in range(len(memorylist)): sum1 = sum1 + memorylist[i] memorylist =[] memorylist.append(sum1) text.insert(1.0,sum1) elif m_minus == True: difference = 0 for i in range(len(memorylist)): difference = memorylist[i]-difference difference = - difference memorylist.append(difference) text.insert(1.0,difference) def angle_radio(): text.delete(1.0,END) global angle_is angle_is =True def radium_radio(): text.delete(1.0,END) global radium_is radium_is =True def angle_choice(): global x if angle_is == True: x = pi*eval(text.get(1.0,END))/180 if radium_is == True: x = eval(text.get(1.0,END)) def circle_ratio(): text.insert(END,pi) def sin_x(): global x angle_choice() text.delete(1.0,END) text.insert(1.0,sin(x)) def cos_x(): global x angle_choice() text.delete(1.0,END) text.insert(1.0,cos(x)) def tan_x(): angle_choice() if x == 90 or x == pi/2: text_alert.insert(1.0,"正切角度不能为90度或π/2弧度") return else: text.delete(1.0,END) text.insert(1.0,tan(x)) def square_it(): temp = eval(text.get(1.0,END)) text.delete(1.0,END) text.insert(1.0,pow(temp,2)) def x_ypower(): global list_power,x,xypower xypower =True x = eval(text.get(1.0,END)) list_power.append(x) text.delete(1.0,END) def tri_power(): temp = eval(text.get(1.0,END)) text.delete(1.0,END) text.insert(1.0,pow(temp,3)) def Bracket_left(): text.insert(END,"(") def Bracket_right(): text.insert(END,")") def nature_log(): temp = eval(text.get(1.0,END)) text.delete(1.0,END) text.insert(1.0,log1p(temp)) def deci_log(): temp = eval(text.get(1.0,END)) text.delete(1.0,END) text.insert(1.0,log10(temp)) def bina_log(): temp = eval(text.get(1.0,END)) text.delete(1.0,END) text.insert(1.0,log2(temp)) def y_based_on_x_log(): global list_log,x,xylog xylog =True x = eval(text.get(1.0,END)) list_log.append(x) text.delete(1.0,END) def natur_const(): text.insert(END,e) def anti_sin(): temp = eval(text.get(1.0,END)) text.delete(1.0,END) text.insert(1.0,asin(temp)*180/pi) def anti_cos(): temp = eval(text.get(1.0,END)) text.delete(1.0,END) text.insert(1.0,acos(temp)*180/pi) def anti_tan(): temp = eval(text.get(1.0,END)) text.delete(1.0,END) text.insert(1.0,atan(temp)*180/pi) def sqrt_num(): temp = eval(text.get(1.0,END)) text.delete(1.0,END) text.insert(1.0,sqrt(temp)) def tri_root(): temp = eval(text.get(1.0,END)) text.delete(1.0,END) text.insert(1.0,pow(temp,1/3)) def standard(): MC = Button(root,text ="MC",width =10,command = Mc) MC.bind("<Enter>",come) MC.bind("<Leave>",go) MC.grid(row=2,column =0,sticky =W,padx =1) MR = Button(root,text ="MR",width =10,command = Mr) MR.grid(row=2,column =1,stick = W,padx =1) MR.bind("<Enter>",come) MR.bind("<Leave>",go) MS = Button(root,text ="MS",width =10,command =Ms) MS.grid(row=2,column =2,sticky =W,padx =1) MS.bind("<Enter>",come) MS.bind("<Leave>",go) M_ADD = Button(root,text ="M+",width =10,command =M_plus) M_ADD.grid(row=2,column =3,sticky =W,padx =1) M_ADD.bind("<Enter>",come) M_ADD.bind("<Leave>",go) M_ADD.bind("<>") M_Minus = Button(root,text ="M-",width =10,command =M_minus) M_Minus.grid(row=2,column =4,sticky =W,padx =1) M_Minus.bind("<Enter>",come) M_Minus.bind("<Leave>",go) DEL = Button(root,text ="→",width =10,command =delete_onechar) DEL.grid(row=3,column =0,sticky =W,padx =1) DEL.bind("<Enter>",come) DEL.bind("<Leave>",go) CEbtn = Button(root,text ="CE",width =10,command =CE) CEbtn.grid(row=3,column =1,sticky =W,padx =1) CEbtn.bind("<Enter>",come) CEbtn.bind("<Leave>",go) Cbtn = Button(root,text ="C",width =10,command =C) Cbtn.grid(row=3,column =2,sticky =W,padx =1) Cbtn.bind("<Enter>",come) Cbtn.bind("<Leave>",go) negativ = Button(root,text ="负号 - ",width =10,command = negative) negativ.grid(row=3,column =3,sticky =W,padx =1) negativ.bind("<Enter>",come) negativ.bind("<Leave>",go) sqr_root = Button(root,text ="平方根√",width =10,command =Square_root ) sqr_root.grid(row =3,column =4,sticky =W,padx =1) sqr_root.bind("<Enter>",come) sqr_root.bind("<Leave>",go) btn7 = Button(root,text =7,width =10,command = num7) btn7.grid(row=4,column =0,sticky =W,padx =1) btn7.bind("<Enter>",come) btn7.bind("<Leave>",go) btn8 = Button(root,text =8,width =10,command = num8) btn8.grid(row=4,column =1,sticky =W,padx =1) btn8.bind("<Enter>",come) btn8.bind("<Leave>",go) btn9 = Button(root,text =9,width =10,command = num9) btn9.grid(row=4,column =2,sticky =W,padx =1) btn9.bind("<Enter>",come) btn9.bind("<Leave>",go) div = Button(root,text ="除法 /",width =10,command = div_num) div.grid(row=4,column =3,sticky =W,padx =1) div.bind("<Enter>",come) div.bind("<Leave>",go) per = Button(root,text ="百分之 %",width =10,command =Per) per.grid(row=4,column =4,sticky =W,padx =1) per.bind("<Enter>",come) per.bind("<Leave>",go) btn4 = Button(root,text =4,width =10,command = num4) btn4.grid(row=5,column =0,sticky =W,padx =1) btn4.bind("<Enter>",come) btn4.bind("<Leave>",go) btn5 = Button(root,text =5,width =10,command = num5) btn5.grid(row=5,column =1,sticky =W,padx =1) btn5.bind("<Enter>",come) btn5.bind("<Leave>",go) btn6 = Button(root,text =6,width =10,command = num6) btn6.grid(row=5,column =2,sticky =W,padx =1) btn6.bind("<Enter>",come) btn6.bind("<Leave>",go) times = Button(root,text ="乘法 ×",width =10,command = times_num) times.grid(row=5,column =3,sticky =W,padx =1) times.bind("<Enter>",come) times.bind("<Leave>",go) reciprocal = Button(root,text ="倒数 1/x",width =10,command =Reci_num) reciprocal.grid(row=5,column =4,sticky =W,padx =1) reciprocal.bind("<Enter>",come) reciprocal.bind("<Leave>",go) btn1 = Button(root,text =1,width =10,command = num1) btn1.grid(row=6,column =0,sticky =W,padx =1) btn1.bind("<Enter>",come) btn1.bind("<Leave>",go) btn2 = Button(root,text =2,width =10,command = num2) btn2.grid(row=6,column =1,sticky =W,padx =1) btn2.bind("<Enter>",come) btn2.bind("<Leave>",go) btn3 = Button(root,text =3,width =10,command = num3) btn3.grid(row=6,column =2,sticky =W,padx =1) btn3.bind("<Enter>",come) btn3.bind("<Leave>",go) minus = Button(root,text ="减 - ",width =10,command =minus_num ) minus.grid(row=6,column =3,sticky =W,padx =1) minus.bind("<Enter>",come) minus.bind("<Leave>",go) equal = Button(root,text ="=",width =10,height =3,command = equal_it) equal.grid(row=6,column =4,sticky =W,padx =1,rowspan =2) equal.bind("<Enter>",come) equal.bind("<Leave>",go) btn0 = Button(root,text =0,width =22,height =1,command = num0) btn0.grid(row=7,column =0,sticky =W,padx =1,columnspan =2) btn0.bind("<Enter>",come) btn0.bind("<Leave>",go) dot = Button(root,text =".",width =7,font =("Times","14"),height =1,command =dot_it) dot.grid(row=7,column =2,sticky =W,padx =1) dot.bind("<Enter>",come) dot.bind("<Leave>",go) add = Button(root,text ="加 +",width =10,command = Addnum) add.grid(row=7,column =3,sticky =W,padx =1) add.bind("<Enter>",come) add.bind("<Leave>",go) def sci(): v =IntVar() angle = Radiobutton(root,text = "角度",variable =v,value =1,command =angle_radio) angle.grid(row=0,column=6) radium = Radiobutton(root,text = "弧度",variable =v,value =2,command =radium_radio ) radium.grid(row=0,column=7) sinaa = Button(root,text = "Sin(x)",width =18,command = sin_x) sinaa.grid(row = 1,column =6) sinaa.bind("<Enter>",come) sinaa.bind("<Leave>",go) cosaa = Button(root,text = "COS(x)",width =18,command = cos_x) cosaa.grid(row =1,column =7) cosaa.bind("<Enter>",come) cosaa.bind("<Leave>",go) tanaa = Button(root,text = "tan(x)",width =18,command =tan_x) tanaa.grid(row = 1,column =8) tanaa.bind("<Enter>",come) tanaa.bind("<Leave>",go) x_square = Button(root,text = "x的平方",width =18,command = square_it) x_square.grid(row =2,column =6) x_square.bind("<Enter>",come) x_square.bind("<Leave>",go) X_Ytimes = Button(root,text = "x的Y次方",width =18,command =x_ypower) X_Ytimes.grid(row = 2,column =7) X_Ytimes.bind("<Enter>",come) X_Ytimes.bind("<Leave>",go) X_tri= Button(root,text = "x的三次方",width =18,command = tri_power) X_tri.grid(row = 2,column =8) X_tri.bind("<Enter>",come) X_tri.bind("<Leave>",go) leftbra = Button(root,text = "左括号 ( ",width =18,command = Bracket_left) leftbra.grid(row = 3,column =6) leftbra.bind("<Enter>",come) leftbra.bind("<Leave>",go) rightbra = Button(root,text = "右括号 )",width =18,command = Bracket_right) rightbra.grid(row =3,column =7) rightbra.bind("<Enter>",come) rightbra.bind("<Leave>",go) natural_logs = Button(root,text = "自然对数 In(x)",width =18,command =nature_log) natural_logs.grid(row = 7,column =6) natural_logs.bind("<Enter>",come) natural_logs.bind("<Leave>",go) square_root = Button(root,text = "x的平方根",width =18,command = sqrt_num) square_root.grid(row =4,column =6) square_root.bind("<Enter>",come) square_root.bind("<Leave>",go) X_Yroot = Button(root,text = "x的Y次方根",width =18,command = x_ypower) X_Yroot.grid(row = 4,column =7) X_Yroot.bind("<Enter>",come) X_Yroot.bind("<Leave>",go) X_tri_root = Button(root,text = "x的三次方根",width =18,command = tri_root) X_tri_root.grid(row = 4,column =8) X_tri_root.bind("<Enter>",come) X_tri_root.bind("<Leave>",go) log10aa = Button(root,text = "以10为底的对数Logx",width =18,command =deci_log) log10aa.grid(row = 5,column =6) log10aa.bind("<Enter>",come) log10aa.bind("<Leave>",go) log2aa = Button(root,text = "以2为底的对数Logx",width =18,command =bina_log) log2aa.grid(row = 5,column =8) log2aa.bind("<Enter>",come) log2aa.bind("<Leave>",go) pow10 = Button(root,text = "以x为底,y为真数的logx",width =18,command =y_based_on_x_log) pow10.grid(row =5,column =7) pow10.bind("<Enter>",come) pow10.bind("<Leave>",go) radio = Button(root,text = "圆周率 π",width =18,command =circle_ratio) radio.grid(row = 7,column =7) radio.bind("<Enter>",come) radio.bind("<Leave>",go) natur_con = Button(root,text = "自然常数e",width =18,command =natur_const) natur_con.grid(row = 7,column =8) natur_con.bind("<Enter>",come) natur_con.bind("<Leave>",go) antisin = Button(root,text = "反三角正弦sin(-1)x",width =18,height =1,command =anti_sin) antisin.grid(row = 6,column =6) antisin.bind("<Enter>",come) antisin.bind("<Leave>",go) anticos = Button(root,text = "反三角余弦cos(-1)x",width =18,height =1,command =anti_cos) anticos.grid(row =6,column =7) anticos.bind("<Enter>",come) anticos.bind("<Leave>",go) antitan = Button(root,text = "反三角正切tan(-1)x",width =18,height =1,command = anti_tan) antitan.grid(row = 6,column =8) antitan.bind("<Enter>",come) antitan.bind("<Leave>",go) ################### if __name__ == "__main__": ################################菜单设计 standard_it =True sci_it = False static_it = False code_it = False memorylist = [] m_plus = False m_minus = False angle_is = False radium_is = False x =0 list_power = [] list_log =[] xypower = False xylog = False text = Text(root,height =1,font = ("Times","20"),width =31,fg = "#%02x%02x%02x" % (46,150,67),bd =0) text.grid(row = 0,column =0,columnspan =6) text_alert = Text(root,height=1,width =31,fg = "red",font = ("Times","20"),bd = 0) text_alert.grid(row =1,column =0,columnspan =6) menubar = Menu(root) mode_menu = Menu(menubar,tearoff= 0) v_mode = IntVar() mode_menu.add_radiobutton(label = "标准型",variable = v_mode,value =0,command =standard) mode_menu.add_radiobutton(label = "科学型",variable = v_mode,value =1,command = sci) mode_menu.add_radiobutton(label = "程序员型",variable =v_mode,value =2) mode_menu.add_radiobutton(label = "统计型",variable = v_mode,value =3) mode_menu.insert_separator(7) v_his_math = IntVar() mode_menu.add_radiobutton(label = "历史记录",variable = v_his_math,value =0) mode_menu.add_radiobutton(label = "数字分组",variable = v_his_math,value =1) menubar.add_cascade(label = "查看",menu = mode_menu) mode_menu.insert_separator(11) v_transform = IntVar() mode_menu.add_radiobutton(label = "单位转换",variable =v_transform,value =1) edit = Menu(menubar) edit.add_command(label = "复制") edit.add_command(label = "黏贴") menubar.add_cascade(label = "编辑",menu = edit) helpm = Menu(menubar) helpm.add_command(label = "使用说明") helpm.add_command(label = "版本为1.0") menubar.add_cascade(label = "帮助",menu = helpm) root.config(menu = menubar)#有这句菜单栏才能正常工作 #########################################窗体设计 standard() sci() root.mainloop()
更多计算器功能实现,请点击专题: 计算器功能汇总 进行学习
关于Android计算器功能的实现,查看专题:Android计算器 进行学习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年11月19日
2024年11月19日
- 好薇2024《兵哥哥》1:124K黄金母盘[WAV+CUE]
- 胡歌.2006-珍惜(EP)【步升大风】【FLAC分轨】
- 洪荣宏.2014-拼乎自己看【华特】【WAV+CUE】
- 伊能静.1999-从脆弱到勇敢1987-1996精选2CD【华纳】【WAV+CUE】
- 刘亮鹭《汽车DJ玩主》[WAV+CUE][1.1G]
- 张杰《最接近天堂的地方》天娱传媒[WAV+CUE][1.1G]
- 群星《2022年度发烧天碟》无损黑胶碟 2CD[WAV+CUE][1.4G]
- 罗文1983-罗文甄妮-射雕英雄传(纯银AMCD)[WAV+CUE]
- 群星《亚洲故事香港纯弦》雨果UPMAGCD2024[低速原抓WAV+CUE]
- 群星《经典咏流传》限量1:1母盘直刻[低速原抓WAV+CUE]
- 庾澄庆1993《老实情歌》福茂唱片[WAV+CUE][1G]
- 许巍《在别处》美卡首版[WAV+CUE][1G]
- 林子祥《单手拍掌》华纳香港版[WAV+CUE][1G]
- 郑秀文.1997-我们的主题曲【华纳】【WAV+CUE】
- 群星.2001-生命因爱动听电影原创音乐AVCD【MEDIA】【WAV+CUE】