高防服务器

怎么用python制作简单计算器功能


怎么用python制作简单计算器功能

发布时间:2022-02-07 11:05:13 来源:高防服务器网 阅读:75 作者:iii 栏目:开发技术

今天小编给大家分享一下怎么用python制作简单计算器功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

效果如图:

主要思路:

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

代码:

from tkinter import *     W = 280 #窗口宽度  H = 460 #窗口高度  process_H = 110 #显示运算过程的标签高度  result_H = 50   #显示运算结果的标签高度  msFont = '微软雅黑' #字体  fontSize = 20 #字体大小     btnBoderWidth = 0.5 #边框宽度  btnColor = '#4F4F4F' #按钮颜色  btnWidth = 70 #按钮宽度  btnHeight = 60 #按钮高度     mainWindows = Tk()  mainWindows.title('计算器')  mainWindows.minsize(W,H)     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)  process.place(width=W,height=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,command=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()

以上就是“怎么用python制作简单计算器功能”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注高防服务器网行业资讯频道。

[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[