怎么用python制作简单计算器功能
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,今天小编给大家分享一下怎么用python制作简单计算器功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我
千家信息网最后更新 2026年11月04日怎么用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安全错误
数据库的锁怎样保障安全
深圳市人人互联网科技有限公司
互联网电商科技
重庆互联网络科技
互联网科技汛
隆华科技工业互联网
深圳前海聚择互联网科技有限公司
新华互联网科技2019
互联网科技博主是什么意思
常德市电业局互联网科技部
互联网公司科技股
乌鲁木齐新华智原互联网科技学校
济南有互联网科技公司吗
为客找房互联网科技公司怎么样
沐思想互联网科技有限公司
梅州GM互联网络科技有限公司
互联网科技数字货币
互联网金融运营模式中的金融科技
安徽零酒互联网科技有限公司
盐城市攀科互联网科技有限公司
每日互联网科技新闻
上海卓越科技互联网
互联网属科技
北京互联网科技
北京大学互联网科技怎么样
欧洲十大科技互联网公司
湖南诚度互联网科技有限公司
浙江互联网科技研学营
沐思想互联网科技有限公司
互联网企业和网络科技有限公司
如何强化互联网金融科技