用python做计算器

这篇具有很好参考价值的文章主要介绍了用python做计算器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

朋友们大家好,今天的内容是:用跑python做一个简易计算器,大家先来看一下效果:

用python做计算器

 可以看到,程序实现了加减乘除的功能,也可以求出余数。

这个程序要怎么实现呢,首先,我们需要导入tkinter模块

import tkinter #导入tkinter模块

再来创造一个tkinter的窗口

root  = tkinter.Tk()
root.minsize(280,500)

再来实现我们的界面布局

#1.界面布局
#显示面板
result = tkinter.StringVar()
result.set(0)                      #显示面板显示结果1,用于显示默认数字0
result2 = tkinter.StringVar()  

再来编写现显示版的脚本

#显示版
label = tkinter.Label(root,font = ('微软雅黑',20),bg = '#EEE9E9',bd ='9',fg = '#828282',anchor = 'se',textvariable 
= result2)
label.place(width = 280,height = 170)
label2 = tkinter.Label(root,font = ('微软雅黑',30),bg = '#EEE9E9',bd ='9',fg = 'black',anchor = 'se',textvariable 
= result)
label2.place(y = 170,width = 280,height = 60)

做一个计算器需要数字按钮的功能,所以要编写按钮的脚本

#数字键按钮

btn7 = tkinter.Button(root,text = '7',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('7'))
btn7.place(x = 0,y = 285,width = 70,height = 55)
btn8 = tkinter.Button(root,text = '8',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('8'))
btn8.place(x = 70,y = 285,width = 70,height = 55)
btn9 = tkinter.Button(root,text = '9',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('9'))
btn9.place(x = 140,y = 285,width = 70,height = 55)
 
btn4 = tkinter.Button(root,text = '4',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('4'))
btn4.place(x = 0,y = 340,width = 70,height = 55)
btn5 = tkinter.Button(root,text = '5',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('5'))
btn5.place(x = 70,y = 340,width = 70,height = 55)
btn6 = tkinter.Button(root,text = '6',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('6'))
btn6.place(x = 140,y = 340,width = 70,height = 55)
 
btn1 = tkinter.Button(root,text = '1',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('1'))
btn1.place(x = 0,y = 395,width = 70,height = 55)
btn2 = tkinter.Button(root,text = '2',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('2'))
btn2.place(x = 70,y = 395,width = 70,height = 55)
btn3 = tkinter.Button(root,text = '3',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('3'))
btn3.place(x = 140,y = 395,width = 70,height = 55)
btn0 = tkinter.Button(root,text = '0',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('0'))
btn0.place(x = 70,y = 450,width = 70,height = 55)

光有数字按钮还不够,还需要运算符号。

#运算符号按钮
btnac = tkinter.Button(root,text = 'AC',bd = 0.5,font = ('黑体',20),fg = 'orange',command = lambda :pressCompute('AC'))
btnac.place(x = 0,y = 230,width = 70,height = 55)
btnback = tkinter.Button(root,text = '←',font = ('微软雅黑',20),fg = '#4F4F4F',bd = 0.5,command = lambda:
pressCompute('b'))
btnback.place(x = 70,y = 230,width = 70,height = 55)
btndivi = tkinter.Button(root,text = '÷',font = ('微软雅黑',20),fg = '#4F4F4F',bd = 0.5,command = lambda:
pressCompute('/'))
btndivi.place(x = 140,y = 230,width = 70,height = 55)
btnmul = tkinter.Button(root,text ='×',font = ('微软雅黑',20),fg = "#4F4F4F",bd = 0.5,command = lambda:
pressCompute('*'))
btnmul.place(x = 210,y = 230,width = 70,height = 55)
btnsub = tkinter.Button(root,text = '-',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:
pressCompute('-'))
btnsub.place(x = 210,y = 285,width = 70,height = 55)
btnadd = tkinter.Button(root,text = '+',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:
pressCompute('+'))
btnadd.place(x = 210,y = 340,width = 70,height = 55)
btnequ = tkinter.Button(root,text = '=',bg = 'orange',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = 
lambda :pressEqual())
btnequ.place(x = 210,y = 395,width = 70,height = 110)
btnper = tkinter.Button(root,text = '%',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:
pressCompute('%'))
btnper.place(x = 0,y = 450,width = 70,height = 55)
btnpoint = tkinter.Button(root,text = '.',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:
pressCompute('.'))
btnpoint.place(x = 140,y = 450,width = 70,height = 55)

接下来的代码很简单,我就不细讲了

#操作函数
lists = []                            #设置一个变量 保存运算数字和符号的列表
isPressSign = False                  #添加一个判断是否按下运算符号的标志,假设默认没有按下按钮
isPressNum = False
#数字函数
def pressNum(num):                   #设置一个数字函数 判断是否按下数字 并获取数字将数字写在显示版上
    global lists                     #全局化lists和按钮状态isPressSign
    global isPressSign
    if isPressSign == False:
        pass
    else:                            #重新将运算符号状态设置为否
        result.set(0)
        isPressSign = False

    #判断界面的数字是否为0
    oldnum = result.get()             #第一步
    if oldnum =='0':                 #如过界面上数字为0 则获取按下的数字
       result.set(num)
    else:                            #如果界面上的而数字不是0  则链接上新按下的数字
        newnum = oldnum + num
        result.set(newnum)            #将按下的数字写到面板中

#运算函数
def pressCompute(sign):
    global lists
    global isPressSign
    num = result.get()              #获取界面数字
    lists.append(num)               #保存界面获取的数字到列表中

    lists.append(sign)              #讲按下的运算符号保存到列表中
    isPressSign = True

    if sign =='AC':                #如果按下的是'AC'按键,则清空列表内容,讲屏幕上的数字键设置为默认数字0
        lists.clear()
        result.set(0)
    if sign =='b':                 #如果按下的是退格'',则选取当前数字第一位到倒数第二位
        a = num[0:-1]
        lists.clear()
        result.set(a)

#获取运算结果函数
def pressEqual():
    global lists
    global isPressSign

    curnum = result.get()           #设置当前数字变量,并获取添加到列表
    lists.append(curnum)

    computrStr = ''.join(lists)     #讲列表内容用join命令将字符串链接起来
    endNum = eval(computrStr)       #用eval命令运算字符串中的内容
#    a = str(endNum)
#   b = '='+a                       #给运算结果前添加一个 '=' 显示   不过这样写会有BUG 
#   c = b[0:10]                     #所有的运算结果取9位数
    result.set(endNum)                   #讲运算结果显示到屏幕1
    result2.set(computrStr)         #将运算过程显示到屏幕2
    lists.clear()                   #清空列表内容

最后,进入循环

root.mainloop()

接下来是完整代码:

import tkinter #导入tkinter模块

root  = tkinter.Tk()
root.minsize(280,500)

#1.界面布局
#显示面板
result = tkinter.StringVar()
result.set(0)                      #显示面板显示结果1,用于显示默认数字0
result2 = tkinter.StringVar()           #显示面板显示结果2,用于显示计算过程

#显示版
label = tkinter.Label(root,font = ('微软雅黑',20),bg = '#EEE9E9',bd ='9',fg = '#828282',anchor = 'se',textvariable 
= result2)
label.place(width = 280,height = 170)
label2 = tkinter.Label(root,font = ('微软雅黑',30),bg = '#EEE9E9',bd ='9',fg = 'black',anchor = 'se',textvariable 
= result)
label2.place(y = 170,width = 280,height = 60)

#数字键按钮

btn7 = tkinter.Button(root,text = '7',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('7'))
btn7.place(x = 0,y = 285,width = 70,height = 55)
btn8 = tkinter.Button(root,text = '8',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('8'))
btn8.place(x = 70,y = 285,width = 70,height = 55)
btn9 = tkinter.Button(root,text = '9',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('9'))
btn9.place(x = 140,y = 285,width = 70,height = 55)
 
btn4 = tkinter.Button(root,text = '4',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('4'))
btn4.place(x = 0,y = 340,width = 70,height = 55)
btn5 = tkinter.Button(root,text = '5',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('5'))
btn5.place(x = 70,y = 340,width = 70,height = 55)
btn6 = tkinter.Button(root,text = '6',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('6'))
btn6.place(x = 140,y = 340,width = 70,height = 55)
 
btn1 = tkinter.Button(root,text = '1',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('1'))
btn1.place(x = 0,y = 395,width = 70,height = 55)
btn2 = tkinter.Button(root,text = '2',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('2'))
btn2.place(x = 70,y = 395,width = 70,height = 55)
btn3 = tkinter.Button(root,text = '3',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('3'))
btn3.place(x = 140,y = 395,width = 70,height = 55)
btn0 = tkinter.Button(root,text = '0',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : 
pressNum('0'))
btn0.place(x = 70,y = 450,width = 70,height = 55)


#运算符号按钮
btnac = tkinter.Button(root,text = 'AC',bd = 0.5,font = ('黑体',20),fg = 'orange',command = lambda :pressCompute('AC'))
btnac.place(x = 0,y = 230,width = 70,height = 55)
btnback = tkinter.Button(root,text = '←',font = ('微软雅黑',20),fg = '#4F4F4F',bd = 0.5,command = lambda:
pressCompute('b'))
btnback.place(x = 70,y = 230,width = 70,height = 55)
btndivi = tkinter.Button(root,text = '÷',font = ('微软雅黑',20),fg = '#4F4F4F',bd = 0.5,command = lambda:
pressCompute('/'))
btndivi.place(x = 140,y = 230,width = 70,height = 55)
btnmul = tkinter.Button(root,text ='×',font = ('微软雅黑',20),fg = "#4F4F4F",bd = 0.5,command = lambda:
pressCompute('*'))
btnmul.place(x = 210,y = 230,width = 70,height = 55)
btnsub = tkinter.Button(root,text = '-',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:
pressCompute('-'))
btnsub.place(x = 210,y = 285,width = 70,height = 55)
btnadd = tkinter.Button(root,text = '+',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:
pressCompute('+'))
btnadd.place(x = 210,y = 340,width = 70,height = 55)
btnequ = tkinter.Button(root,text = '=',bg = 'orange',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = 
lambda :pressEqual())
btnequ.place(x = 210,y = 395,width = 70,height = 110)
btnper = tkinter.Button(root,text = '%',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:
pressCompute('%'))
btnper.place(x = 0,y = 450,width = 70,height = 55)
btnpoint = tkinter.Button(root,text = '.',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:
pressCompute('.'))
btnpoint.place(x = 140,y = 450,width = 70,height = 55)

#操作函数
lists = []                            #设置一个变量 保存运算数字和符号的列表
isPressSign = False                  #添加一个判断是否按下运算符号的标志,假设默认没有按下按钮
isPressNum = False
#数字函数
def pressNum(num):                   #设置一个数字函数 判断是否按下数字 并获取数字将数字写在显示版上
    global lists                     #全局化lists和按钮状态isPressSign
    global isPressSign
    if isPressSign == False:
        pass
    else:                            #重新将运算符号状态设置为否
        result.set(0)
        isPressSign = False

    #判断界面的数字是否为0
    oldnum = result.get()             #第一步
    if oldnum =='0':                 #如过界面上数字为0 则获取按下的数字
       result.set(num)
    else:                            #如果界面上的而数字不是0  则链接上新按下的数字
        newnum = oldnum + num
        result.set(newnum)            #将按下的数字写到面板中

#运算函数
def pressCompute(sign):
    global lists
    global isPressSign
    num = result.get()              #获取界面数字
    lists.append(num)               #保存界面获取的数字到列表中

    lists.append(sign)              #讲按下的运算符号保存到列表中
    isPressSign = True

    if sign =='AC':                #如果按下的是'AC'按键,则清空列表内容,讲屏幕上的数字键设置为默认数字0
        lists.clear()
        result.set(0)
    if sign =='b':                 #如果按下的是退格'',则选取当前数字第一位到倒数第二位
        a = num[0:-1]
        lists.clear()
        result.set(a)

#获取运算结果函数
def pressEqual():
    global lists
    global isPressSign

    curnum = result.get()           #设置当前数字变量,并获取添加到列表
    lists.append(curnum)

    computrStr = ''.join(lists)     #讲列表内容用join命令将字符串链接起来
    endNum = eval(computrStr)       #用eval命令运算字符串中的内容
#    a = str(endNum)
#   b = '='+a                       #给运算结果前添加一个 '=' 显示   不过这样写会有BUG 
#   c = b[0:10]                     #所有的运算结果取9位数
    result.set(endNum)                   #讲运算结果显示到屏幕1
    result2.set(computrStr)         #将运算过程显示到屏幕2
    lists.clear()                   #清空列表内容

root.mainloop()

好了,本文章的内容就到这里,谢谢观看。文章来源地址https://www.toymoban.com/news/detail-508662.html

到了这里,关于用python做计算器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python自制简易版计算器小程序

    今天来给你们分享一个自制的桌面小程序【简易版计算器】 文章内有效果展示,你们可以自行看看哦 不想看文章,想直接领取源码的话,可以直接点击文章末尾的名片哈 Python 3.6 Pycharm 界面设置 导入模块 所有 源码 点击 此处 领取 即可 实例化一个窗体对象 标题 大小以及出

    2024年02月09日
    浏览(34)
  • Python - 简易版计算器(附完整代码)

    对输入的两个数进行一次加减乘除 对输入的运算符进行判断 做出计算机图形界面

    2024年02月08日
    浏览(39)
  • python界面开发案例:制作一个计算器软件

    前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 在我们手机上大家都有一个计算器,对吧 那它这功能是怎么实现的呢? 今天我们在电脑上来实现一个电脑端计算器界面~ 开发环境: Python 3.8 / 编译器 Pycharm 2021.2版本 / 编辑器 本文所有模块环境源码教程皆可点击文章下方

    2023年04月16日
    浏览(39)
  • Python制作简易计算器(GUI)---Tkinter

    tkinter模块是Python标准的TK GUI工具包接口,可以实现一些较为简单GUI的创建。 麻雀虽小,五脏俱全 TK工具集使用TCL(Tool Command Language)语言开发 运行相同的程序时,运行速度快于pyqt5 组件能满足基本使用 程序界面较简陋 开发时,使用的语句更短更易懂 Python内置的标准库 Qt框

    2024年02月08日
    浏览(47)
  • python tkinter 最简洁的计算器按钮排列

      代码如下,只要再加上按键绑定事件函数,计算器既可使用了。  代码最关键的就是只用一个双重循环就把24个按键一次搞定: 除了主角Button控件外,还有三个配角控件:Label、Separator以及Frame Separator隔开控件用,Frame摆放显示结果的Label标签,Label的原版帮助如下: Help o

    2024年01月23日
    浏览(28)
  • Python四则运算“计算器”——整数口算练习“小程序”

    设定练习题目数量、最大取值整数数,即时判定,答对鼓励答错打印正确结果。 【学习的细节是欢悦的历程】 Python 官网 :https://www.python.org/ Free :大咖免费“ 圣经 ”教程《 python 完全自学教程 》,不仅仅是基础那么简单…… 地址:https://lqpybook.readthedocs.io/   自学并不是

    2024年02月07日
    浏览(55)
  • 使用Python编写简单的小程序、成绩计算器

    成绩计算器程序需要两个分数,以百分比表示 - 一个用于项目,一个用于考试。 项目和考试都为最终评估成绩贡献了50%。 程序应从中计算出总体百分比,并使用下表中的数据计算出最终成绩: 例 项目分数 - 78%,考试分数 - 65%。 最终成绩 = 71.5% ((78 + 65)*0.5),最终成绩

    2024年02月11日
    浏览(27)
  • 举一反三学python(12)—制作简易计算器

            下图为简易、实用的计算器的效果图,今天展示用百行代码完成。 import tkinter as tk win = tk.Tk()                          # 实例化一个窗体对象 win.title(\\\'简易计算器\\\')           # 窗口标题 win.geometry(\\\'295x280\\\')          # 窗口大小 win.attributes(\\\'-alpha\\\', 0.9)   

    2024年02月03日
    浏览(55)
  • Python综合案例—利用tkinter实现计算器的程序

    目录 一、导入 tkinter 库 定义全局变量 二、定义回调函数 三、创建窗口对象 四、创建标签控件 五、创建数字按钮 六、创建加、减、乘、除和等于按钮 七、创建清空按钮 八、总结         用Python实现计算器可以让我们更好地理解面向对象编程、GUI 编程和事件驱动编程等

    2024年02月04日
    浏览(57)
  • 用python写一个支持加减乘除的简单计算器

    运行该程序后,用户将首先看到一个菜单,提示用户可以选择四种运算之一。用户输入选择后,程序将要求输入两个数字,然后进行相应的计算并输出结果。 请注意,上面的程序仅作为一个简单的示例。实际的计算器程序可能需要更多的功能和验证输入的错误等方面的处理。

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包