侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

python3.5仿微软计算器程序

Python  /  管理员 发布于 7年前   147

本文实例为大家分享了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 Truedef M_minus():  global memorylist  global m_minus  m_minus =True  memorylist.append(eval(text.get(1.0,END)))  text.delete(1.0,END)  return Truedef 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 =Truedef 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()

以上就是本文的全部内容,希望对大家学习python程序设计有所帮助。

您可能感兴趣的文章:

  • python 简易计算器程序,代码就几行
  • 仅用50行代码实现一个Python编写的计算器的教程
  • Python实现简单的四则运算计算器
  • 基于python的Tkinter实现一个简易计算器
  • Python只用40行代码编写的计算器实例
  • 基于wxpython开发的简单gui计算器实例
  • Python PyQt5实现的简易计算器功能示例
  • 利用Tkinter(python3.6)实现一个简单计算器
  • Python设计实现的计算器功能完整实例
  • python3.5 + PyQt5 +Eric6 实现的一个计算器代码
  • Python实现的简单计算器功能详解


  • 上一条:
    使用python3.5仿微软记事本notepad
    下一条:
    Python的Asyncore异步Socket模块及实现端口转发的例子
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客