文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-29 02:28

关注

今天小编给大家分享一下怎么用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制作简单计算器功能”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯