怎么用python制作简单计算器功能
发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,今天小编给大家分享一下怎么用python制作简单计算器功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我
千家信息网最后更新 2025年11月16日怎么用python制作简单计算器功能
今天小编给大家分享一下怎么用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制作简单计算器功能"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
运算
小数
小数点
标签
知识
篇文章
高度
计算器
宽度
按钮
数字
结果
功能
制作
内容
字体
字符
字符串
标志
状态
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
我的世界服务器提示移动太快
学校计算机网络技术专业
抢单软件挂服务器开发
二五六互联网科技公司杭州
成都计算机网络技术有限公司
2008新建数据库
服务器有必要配置内存条吗
网络技术服务部工作计划
南宁开票软件服务器
常州软件开发定做价格
linux更新网络安全软件
服务器与存储设备维护方案
世界网络安全能力排名
数据库建表步骤
四川项目软件开发哪家可靠
成都c语言软件开发怎么样
新倩女幽魂服务器大全
群硕软件开发有限公司总部
请求游戏服务器错误
网络安全模黑板报
网络安全运维工程师的书
db3数据库最新访问
怎么用sqldbx附加数据库
西安游戏软件开发公司排名
csgo5e社区服务器进不去
北邮网络技术学院
重构网络安全体系
沧州软件开发招聘信息
网络安全证书要多少钱
网络安全人物简笔画图片大全