首页 专栏 python 文章详情

0

用 Python 写个计算器

Python小二 发布于 56 分钟前

我们常见的计算辅助工具有两种,一种是古人发明的算盘,另一种就是我们现代人发明的计算器,与算盘相比,计算器无论是便利性还是计算速度都是优于算盘的,本文我们使用 Python 来实现一个简易的计算器。

实现

我们几乎每个人都用过计算器,大家对于计算器应该都是比较熟悉的,计算器整体也是比较简单的,主要包括:显示器、键盘、运算的逻辑处理等,计算器的图形界面我们使用 tkinter 库实现,下面看一下具体实现过程。

首先,我们画一个主窗口,代码实现如下:

# 创建主窗口

tk = tkinter.Tk()

# 设置窗口大小和位置

tk.geometry('300x210+500+200')

# 不允许改变窗口大小

tk.resizable(False, False)

# 设置窗口标题

tk.title('计算器')

看一下效果:

我们接着画显示器,代码实现如下:

# 自动刷新字符串变量,可用 set 和 get 方法进行传值和取值

contentVar = tkinter.StringVar(tk, '')

# 创建单行文本框

contentEntry = tkinter.Entry(tk, textvariable=contentVar)

# 设置文本框为只读

contentEntry['state'] = 'readonly'

# 设置文本框坐标及宽高

contentEntry.place(x=20, y=10, width=260, height=30)

看一下效果:

再接着画键盘,代码实现如下:

# 按钮显示内容

bvalue = ['C', '+', '-', '//', '2', '0', '1', '√', '3', '4', '5', '*', '6', '7', '8', '.', '9', '/', '**', '=']

index = 0

# 将按钮进行 5x4 放置

for row in range(5):

for col in range(4):

d = bvalue[index]

index += 1

btnDigit = tkinter.Button(tk, text=d, command=lambda x=d: onclick(x))

btnDigit.place(x=20 + col * 70, y=50 + row * 30, width=50, height=20)

看一下效果:

界面画完了,我们看一下处理运算逻辑的代码,如下所示:

# 点击事件

def onclick(btn):

# 运算符

operation = ('+', '-', '*', '/', '**', '//')

# 获取文本框中的内容

content = contentVar.get()

# 如果已有内容是以小数点开头的,在前面加 0

if content.startswith('.'):

content = '0' + content # 字符串可以直接用+来增加字符

# 根据不同的按钮作出不同的反应

if btn in '0123456789':

# 按下 0-9 在 content 中追加

content += btn

elif btn == '.':

# 将 content 从 +-*/ 这些字符的地方分割开来

lastPart = re.split(r'\+|-|\*|/', content)[-1]

if '.' in lastPart:

# 信息提示对话框

tkinter.messagebox.showerror('错误', '重复出现的小数点')

return

else:

content += btn

elif btn == 'C':

# 清除文本框

content = ''

elif btn == '=':

try:

# 对输入的表达式求值

content = str(eval(content))

except:

tkinter.messagebox.showerror('错误', '表达式有误')

return

elif btn in operation:

if content.endswith(operation):

tkinter.messagebox.showerror('错误', '不允许存在连续运算符')

return

content += btn

elif btn == '√':

# 从 . 处分割存入 n,n 是一个列表

n = content.split('.')

# 如果列表中所有的都是数字,就是为了检查表达式是不是正确的

if all(map(lambda x: x.isdigit(), n)):

content = eval(content) ** 0.5

else:

tkinter.messagebox.showerror('错误', '表达式错误')

return

# 将结果显示到文本框中

contentVar.set(content)

整体实现完了之后,我们来演示一下,看一下效果:

是不是有内味了。

打包

为了更加方便的使用,我们可以将 Python 代码打包成 exe 文件,打包我们使用 pyinstaller,安装用 pip install pyinstaller 命令即可。

打包时我们使用 pyinstaller --onefile --nowindowed counter.py 命令即可,此时打包生成的文件是使用的默认图标,如果我们想指定自己的图标可以添加参数 --icon="xxx\xxx.ico",打包生成的文件在 dist 目录,如下图所示:

此时,我们直接运行 exe 文件就行了。

总结

本文我们使用 Python 实现了一个简易的计算器,大家如果有兴趣的话,可以尝试添加更多的功能以及对键盘进行个性化修改。

源码在公众号 Python小二 后台回复 200616 获取。

本文非首发于个人号

python

阅读 29 发布于 56 分钟前

收藏

分享

本作品系原创, 采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议

Python小二

公众号:Python小二

115 声望

343 粉丝 关注作者

0 条评论

得票 时间

提交评论

Python小二

公众号:Python小二

115 声望

343 粉丝 关注作者

宣传栏

目录

我们常见的计算辅助工具有两种,一种是古人发明的算盘,另一种就是我们现代人发明的计算器,与算盘相比,计算器无论是便利性还是计算速度都是优于算盘的,本文我们使用 Python 来实现一个简易的计算器。

实现

我们几乎每个人都用过计算器,大家对于计算器应该都是比较熟悉的,计算器整体也是比较简单的,主要包括:显示器、键盘、运算的逻辑处理等,计算器的图形界面我们使用 tkinter 库实现,下面看一下具体实现过程。

首先,我们画一个主窗口,代码实现如下:

# 创建主窗口

tk = tkinter.Tk()

# 设置窗口大小和位置

tk.geometry('300x210+500+200')

# 不允许改变窗口大小

tk.resizable(False, False)

# 设置窗口标题

tk.title('计算器')

看一下效果:

我们接着画显示器,代码实现如下:

# 自动刷新字符串变量,可用 set 和 get 方法进行传值和取值

contentVar = tkinter.StringVar(tk, '')

# 创建单行文本框

contentEntry = tkinter.Entry(tk, textvariable=contentVar)

# 设置文本框为只读

contentEntry['state'] = 'readonly'

# 设置文本框坐标及宽高

contentEntry.place(x=20, y=10, width=260, height=30)

看一下效果:

再接着画键盘,代码实现如下:

# 按钮显示内容

bvalue = ['C', '+', '-', '//', '2', '0', '1', '√', '3', '4', '5', '*', '6', '7', '8', '.', '9', '/', '**', '=']

index = 0

# 将按钮进行 5x4 放置

for row in range(5):

for col in range(4):

d = bvalue[index]

index += 1

btnDigit = tkinter.Button(tk, text=d, command=lambda x=d: onclick(x))

btnDigit.place(x=20 + col * 70, y=50 + row * 30, width=50, height=20)

看一下效果:

界面画完了,我们看一下处理运算逻辑的代码,如下所示:

# 点击事件

def onclick(btn):

# 运算符

operation = ('+', '-', '*', '/', '**', '//')

# 获取文本框中的内容

content = contentVar.get()

# 如果已有内容是以小数点开头的,在前面加 0

if content.startswith('.'):

content = '0' + content # 字符串可以直接用+来增加字符

# 根据不同的按钮作出不同的反应

if btn in '0123456789':

# 按下 0-9 在 content 中追加

content += btn

elif btn == '.':

# 将 content 从 +-*/ 这些字符的地方分割开来

lastPart = re.split(r'\+|-|\*|/', content)[-1]

if '.' in lastPart:

# 信息提示对话框

tkinter.messagebox.showerror('错误', '重复出现的小数点')

return

else:

content += btn

elif btn == 'C':

# 清除文本框

content = ''

elif btn == '=':

try:

# 对输入的表达式求值

content = str(eval(content))

except:

tkinter.messagebox.showerror('错误', '表达式有误')

return

elif btn in operation:

if content.endswith(operation):

tkinter.messagebox.showerror('错误', '不允许存在连续运算符')

return

content += btn

elif btn == '√':

# 从 . 处分割存入 n,n 是一个列表

n = content.split('.')

# 如果列表中所有的都是数字,就是为了检查表达式是不是正确的

if all(map(lambda x: x.isdigit(), n)):

content = eval(content) ** 0.5

else:

tkinter.messagebox.showerror('错误', '表达式错误')

return

# 将结果显示到文本框中

contentVar.set(content)

整体实现完了之后,我们来演示一下,看一下效果:

是不是有内味了。

打包

为了更加方便的使用,我们可以将 Python 代码打包成 exe 文件,打包我们使用 pyinstaller,安装用 pip install pyinstaller 命令即可。

打包时我们使用 pyinstaller --onefile --nowindowed counter.py 命令即可,此时打包生成的文件是使用的默认图标,如果我们想指定自己的图标可以添加参数 --icon="xxx\xxx.ico",打包生成的文件在 dist 目录,如下图所示:

此时,我们直接运行 exe 文件就行了。

总结

本文我们使用 Python 实现了一个简易的计算器,大家如果有兴趣的话,可以尝试添加更多的功能以及对键盘进行个性化修改。

源码在公众号 Python小二 后台回复 200616 获取。

本文非首发于个人号

python 写一个计算器_用 Python 写个计算器相关推荐

  1. python写一个类方法_重写python脚本,在脚本的每个类中注入一个方法 - python

    假设我有一个python模块foo.py,其中包含: class Foo(object): def __init__(self): pass 接下来,我想解析此脚本,并在每个类中注入一个方法,然后将其 ...

  2. 使用python做一个闹钟_用Python写一个简单地闹钟

    一.闹钟程序如下: import sys import string from time import sleep sa = sys.argv lsa = len(sys.argv) if lsa ! ...

  3. 使用python做一个闹钟_用python做了个高级闹钟 欢迎借鉴

    原标题:用python做了个高级闹钟 欢迎借鉴 音频文件放入和.py文件同级的目录下 这是简单的闹钟做法,市场上闹钟千千万万,但是自己写出来的闹钟就是不一样,不是小编我无聊,学习乐趣就是这样慢慢培养的 ...

  4. 用java写一个日历_使用JAVA写一个简单的日历

    JAVA写一个简单的日历 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDa ...

  5. 用python做一个宠物系统_利用python写个桌面挂件 | 手把手带大家做只桌面宠物呗...

    导语 前段时间有小伙伴留言说想让我带大家写写桌面小挂件,今天就满足一下留过类似言的小伙伴的请求呗~不过感觉写桌面的挂历啥的没意思,就简单带大家做一只桌面宠物吧~ 废话不多说,让我们愉快地开始吧~ 开发 ...

  6. python 定义一个负数_其实Python不难学(4):Python如何处理文本数据

    文本的处理是数据分析工作中很重要的业务领域.Python的字符串变量用于操纵文本型数据.以下命令就定义了一个字符串变量,用于存放一段文本资料. 在Python中,文本数据使用一对单引号或双引号来界定的 ...

  7. python添加一个球_在Python中创建一个旋转球体

    我已经做了这个代码,在一个球形的方式应用球谐函数,因为我正在尝试建立恒星脉动模式的模型.理想情况下,我希望能够有一个可以旋转的图像,可以保存为gif图像.我已经找到了一些代码示例,但是这些示例似乎都不 ...

  8. python制作一个计时器_用Python制作一个猫咪小秒表

    Python基础视频教程 入门免费观看-创客学院​www.makeru.com.cn 秒表是一项随处可见的神奇小物件,最常用到秒表的两大场景,一个是运动会,另一个是健身房,因此也总是让人联想到汗水和心 ...

  9. 用python画一个房子_用Python动态地画一个房子

    用Python动态地画一个房子 Python代码狂人 Python代码大全 用Python动态画一个房子,我们可从上向下画,先画房顶,再依次画阁楼窗户.房屋主体.屋门及主屋窗户. 运行本程序前请确保已 ...

  10. 用python画一个地球_用python做一个地球围绕太阳转的图形

    匿名用户 1级 2017-07-21 回答 平台: python2.7.10 + wxpython 3.0.2 #!/usr/bin/env python #-*- coding: utf-8 -*- ...

最新文章

  1. 中国功率半导体产业销售规模与投资策略研究报告2022版
  2. C语言 | C语言实现日历打印
  3. dsPIC30F 细节点问题不定期更新ing
  4. 【算法系列之十二】最接近的三数之和
  5. 字典(dict)按键(key)和值(value)排序即item()的常用方式
  6. Codeforces Beta Round #22 (Div. 2 Only) E. Scheme(DFS+强连通)
  7. echarts里面的参数解释_SPMSM控制:传统PI速度环参数的整定
  8. markdown语法笔记(二)
  9. apache反向代理实战
  10. Oracle管理存储架构(二)--Oracle管理数据块空间
  11. Atitit 翻页功能的解决方案与版本历史 v4 r49
  12. 2015计算机二级office真题,2015计算机二级office题库(含答案)
  13. zip 命令实现批量文件压缩
  14. 工作流引擎 Activiti 教程(非常详细)
  15. canvas 实现图片添加水印
  16. pdf转换成word后有文字叠加_pdf转成word后格式快速调整
  17. 计算机设置了密码后不能打印了,为什么电脑设置了开机密码后就不能打印了
  18. 第三届艺星超级品牌日钜献·世界名曲音乐会,全网直播!
  19. 王牌战争文明重启服务器维护中,王牌战争文明重启常见问题解答-王牌战争文明重启常见问题一览_牛游戏网...
  20. Skia引擎API整理介绍(skia in Android 2.3 trunk)

热门文章

  1. 求某一范围内的水仙花数 python
  2. java weblogic.wlst_Weblogic - 使用Wlst获取部署类型
  3. 亚马逊站外引流:海外KOL营销
  4. 什么是软件测试?软件测试的目的是什么?划分为哪几个阶段?
  5. 三种架构模式——MVC、MVP、MVVM
  6. 什么情况下运放才能用虚短和虚断的概念1、在开环电路中,输入两端的电压差非常小,不会让运放饱和2、在闭环的深度反馈电路中。
  7. printm matlab,求助:将matlab M文件编译成DLL时出现的问题!
  8. 旋转行求解联立方程(针对特殊情况).(python,数值分析)
  9. r7 7735h和r5 5560U差距 锐龙r77735h和r55560U对比
  10. java的一些技术方案!