用python实现计算器功能,如何用python设计一个计算器_1

  用python实现计算器功能,如何用python设计一个计算器

  这篇文章主要为大家详细介绍了大蟒制作简单计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  本文实例为大家分享了大蟒实现简单计算器功能的具体代码,供大家参考,具体内容如下

  效果如图:

  主要思路:

  用列表保存按下的键,按下等于,转换为字符串,利用内置函数评价评价计算字符串的值。

  代码:

  来自tkinter导入*

  W=280 #窗口宽度

  H=460 #窗口高度

  process_H=110 #显示运算过程的标签高度

  结果H=50 #显示运算结果的标签高度

  msFont=微软雅黑 #字体

  fontSize=20 #字体大小

  btnBoderWidth=0.5 #边框宽度

  btnColor=#4F4F4F #按钮颜色

  btnWidth=70 #按钮宽度

  btnHeight=60 #按钮高度

  mainWindows=Tk()

  mainWindows.title(计算器)

  mainWindows.minsize(宽,高)

  str_process=StringVar()

  str_process.set( )

  str_result=StringVar()

  str_result.set(0 )

  process=Label(mainWindows,font=(msFont,fontSize),bg=orange ,anchor=se ,wraplength=280 ,textvariable=str_process)

  过程.地点(宽度=W,高度=process_H) #显示运算过程的标签

  result=Label(mainWindows,font=(msFont,fontSize 10),bg=orange ,anchor=se ,textvariable=str_result)

  result.place(y=process_H,width=W,height=result_H) #显示运算结果的标签

  button_AC=Button(mainWindows,font=(msFont,fontSize),text=AC ,fg=orange ,bd=btnBoderWidth,command=lambda :clickAC())

  button_AC.place(x=0,y=process_H result_H,width=btnWidth,height=btnHeight)

  button_back=Button(mainWindows,font=(msFont,fontSize),text=,fg=btnColor,bd=btnBoderWidth,command=lambda :clickBack())

  button_back.place(x=btnWidth,y=process_H result_H,width=btnWidth,height=btnHeight)

  button_div=Button(mainWindows,font=(msFont,fontSize),text=,fg=btnColor,bd=btnBoderWidth,command=lambda : clickoper(/))

  button_div.place(x=btnWidth*2,y=process_H result_H,width=btnWidth,height=btnHeight)

  button_mul=Button(mainWindows,font=(msFont,fontSize),text=,fg=btnColor,bd=btnBoderWidth,command=lambda : clickoper( * )

  button_mul.place(x=btnWidth*3,y=process_H result_H,width=btnWidth,height=btnHeight)

  button_7=Button(mainWindows,font=(msFont,fontSize),text=7 ,fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum(7 ))

  button_7.place(x=0,y=process_H result_H btnHeight,width=btnWidth,height=btnHeight)

  button_8=Button(mainWindows,font=(msFont,fontSize),text=8 ,fg=btnColor,bd=btnBoderWidth,comm

  and=lambda :clickNum(8))

  button_8.place(x=btnWidth,y=process_H+result_H+btnHeight,width=btnWidth,height=btnHeight)

  button_9 = Button(mainWindows,font=(msFont,fontSize),text=9,fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum(9))

  button_9.place(x=btnWidth*2,y=process_H+result_H+btnHeight,width=btnWidth,height=btnHeight)

  button_minus = Button(mainWindows,font=(msFont,fontSize),text=-,fg=btnColor,bd=btnBoderWidth,command=lambda :clickOper(-))

  button_minus.place(x=btnWidth*3,y=process_H+result_H+btnHeight,width=btnWidth,height=btnHeight)

  button_4 = Button(mainWindows,font=(msFont,fontSize),text=4,fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum(4))

  button_4.place(x=0,y=process_H+result_H+btnHeight*2,width=btnWidth,height=btnHeight)

  button_5 = Button(mainWindows,font=(msFont,fontSize),text=5,fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum(5))

  button_5.place(x=btnWidth,y=process_H+result_H+btnHeight*2,width=btnWidth,height=btnHeight)

  button_6 = Button(mainWindows,font=(msFont,fontSize),text=6,fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum(6))

  button_6.place(x=btnWidth*2,y=process_H+result_H+btnHeight*2,width=btnWidth,height=btnHeight)

  button_add = Button(mainWindows,font=(msFont,fontSize),text=+,fg=btnColor,bd=btnBoderWidth,command=lambda :clickOper(+))

  button_add.place(x=btnWidth*3,y=process_H+result_H+btnHeight*2,width=btnWidth,height=btnHeight)

  button_1 = Button(mainWindows,font=(msFont,fontSize),text=1,fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum(1))

  button_1.place(x=0,y=process_H+result_H+btnHeight*3,width=btnWidth,height=btnHeight)

  button_2 = Button(mainWindows,font=(msFont,fontSize),text=2,fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum(2))

  button_2.place(x=btnWidth,y=process_H+result_H+btnHeight*3,width=btnWidth,height=btnHeight)

  button_3 = Button(mainWindows,font=(msFont,fontSize),text=3,fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum(3))

  button_3.place(x=btnWidth*2,y=process_H+result_H+btnHeight*3,width=btnWidth,height=btnHeight)

  button_equal = Button(mainWindows,font=(msFont,fontSize),text==,bg=orange,fg=btnColor,bd=btnBoderWidth,command=lambda :clickEqual())

  button_equal.place(x=btnWidth*3,y=process_H+result_H+btnHeight*3,width=btnWidth,height=btnHeight*2)

  button_percent = Button(mainWindows,font=(msFont,fontSize),text=%,fg=btnColor,bd=btnBoderWidth,command=lambda :clickOper("%"))

  button_percent.place(x=0,y=process_H+result_H+btnHeight*4,width=btnWidth,height=btnHeight)

  button_0 = Button(mainWindows,font=(msFont,fontSize),text=0,fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum(0))

  button_0.place(x=btnWidth,y=process_H+result_H+btnHeight*4,width=btnWidth,height=btnHeight)

  button_point = Button(mainWindows,font=(msFont,fontSize),text=.,fg=btnColor,bd=btnBoderWidth,command=lambda :clickPoint())

  button_point.place(x=btnWidth*2,y=process_H+result_H+btnHeight*4,width=btnWidth,height=btnHeight)

  process_list = []

  s_result = ""

  isNum = [False] #上一位按下的是否是数字

  point = [True] #小数点使用情况

  def clickNum(num):  #按下数字

      isNum.append(True)

      point.append(point[-1]) #按下数字,小数点的标志不变

      process_list.append(num)

      s_process = "".join(process_list)

      str_process.set(s_process)

  def clickOper(sign):#按下运算符

      global isNum,point

      if isNum[-1]:

          process_list.append(sign)

          isNum.append(False)

          point.append(True) #按下运算符,小数点标志为可以按下小数点

      else:

          process_list.pop()

          process_list.append(sign)

      s_process = "".join(process_list)

      str_process.set(s_process)

  def clickEqual():#按下等于

      global s_result

      s_process = "".join(process_list)

      s_result = eval(s_process)

      s_result = str(s_result)[0:11] #结果只显示11位

      str_process.set(s_process)

      str_result.set(s_result)

  def clickAC():#按下清除

      global s_result,isNum,point

      s_result = "0"

      isNum = [False]  #状态回到初始时候

      point = [True]

      process_list.clear()

      str_result.set(s_result)

      str_process.set("")

  def clickBack(): #按下退格键

      global point, isNum

      if len(process_list) > 0:

          isNum.pop(-1) #删除最后一位的状态

          point.pop(-1)

          process_list.pop()

          s_process = "".join(process_list)

          str_process.set(s_process)

  def clickPoint():#按下小数点

      global point,isNum

      if isNum[-1] and point[-1]:

          process_list.append(".")

          s_process = "".join(process_list)

          str_process.set(s_process)

          isNum.append(False)

          point.append(False)

  mainWindows.mainloop()

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: