Python实现简易计算器

news2025/1/16 21:03:00

文章目录

  • 一、需求分析
    • 1.1 功能分析
    • 1.2 性能分析
  • 二、技术原理
  • 三、详细设计
    • 3.1 导入tkinter库
    • 3.2 定义全局变量
    • 3.3 定义添加函数
    • 3.4 定义结果函数
    • 3.5 定义清空函数
    • 3.6 创建主窗口并指定其大小和位置
    • 3.7 创建输入框
    • 3.8 创建数字和运算符按钮
    • 3.9 创建等于号和清除按钮
  • 四、功能实现

一、需求分析

1.1 功能分析

使用Python的Tkinter界面设计实现一个简单的计算器,主要功能按钮包括数字键、四则运算符、等于号和清除键,实现了简单的加减乘除运算。

1.2 性能分析

① 系统具有易操作性

在日常使用中,这个计算器应该可以满足大多数用户的需求,即使在旧计算机上也能够流畅运行。

② 系统具有高效性

这个计算器应用程序非常简单,没有太多的计算和数据处理。因此,它的性能应该是相对较好的,无论是在较老的电脑还是在较新的电脑上都能够快速响应和运行。

二、技术原理

这个计算器应用程序是基于Tkinter GUI工具集编写的一个Python应用程序,它使用不同类型的控件和布局管理器来创建图形用户界面并实现计算器的各种功能,通过用方法来处理用户在应用程序上的操作并显示相应的结果。

三、详细设计

3.1 导入tkinter库

① 程序设计

import tkinter as tk

② 程序分析

在程序开头,通过"import tkinter as tk"导入tkinter库,以便使用tkinter库中的控件和方法。

3.2 定义全局变量

① 程序设计

t = ""
color1 = "skyblue"
color2 = "yellow"
color3 = "pink"
color4 = "red"
result = tk.StringVar()

② 程序分析

全局变量t用于表示计算器输入框中的内容。全局变量result是一个StringVar对象,用于实时更新输入框中的内容,全局变量color1-4分别代表不同的颜色。

3.3 定义添加函数

① 程序设计

def Add(num):
    global t
    t = t + str(num)
    result.set(t)

② 程序分析

Add函数用于将数字和运算符添加到输入框中。它获取单击的按钮上的值,将其转换为字符串并附加到全局变量t中,最后更新输入框中的内容result。

3.4 定义结果函数

① 程序设计

def Result():
    try:
        global t
        total = str(eval(t))
        result.set(total)
        t = ""
    except:
        result.set(" error ")
        t = ""

② 程序分析

Result函数用于计算表达式并将结果更新到输入框中。它首先尝试使用Python的内置eval函数计算从输入框中获取的表达式。如果计算成功,则将结果转换为字符串并设置为result,最后清空全局变量t。如果出现任何错误,设置result为" error "字符串并清空全局变量t。

3.5 定义清空函数

① 程序设计

def Clear():
    global t
    t = ""
    result.set("")

② 程序分析

Clear函数用于清空输入框。

3.6 创建主窗口并指定其大小和位置

① 程序设计

root = tk.Tk()
root.configure(background="black")
root.title("简易计算器")
sh = root.winfo_screenheight()
sw = root.winfo_screenwidth()
h = 150
w = 295
x = (sw - w) // 2
y = (sh - h) // 2
root.geometry('%dx%d+%d+%d' % (w, h, x, y))

② 程序分析

通过调用tkinter库中的Tk()函数创建主窗口对象,并设置它的标题和背景颜色和大小。然后通过获取屏幕高度和宽度来自适应地计算窗口的大小和位置。最后使用geometry()方法将窗口定位和显示在屏幕上。

3.7 创建输入框

① 程序设计

entrys = tk.Entry(root, textvariable=result, width=22)
entrys.grid(columnspan=4, ipadx=70)

② 程序分析

创建一个tkinter.Entry对象来显示计算器的输入框。并使用grid()方法来将其添加到主窗口上,并设置它的位置和大小。

3.8 创建数字和运算符按钮

① 程序设计

button1 = tk.Button(root, text=' 1 ', bg=color1, command=lambda: Add(1), height=1, width=7)
button1.grid(row=2, column=0)
button2 = tk.Button(root, text=' 2 ', bg=color1, command=lambda: Add(2), height=1, width=7)
button2.grid(row=2, column=1)
button3 = tk.Button(root, text=' 3 ', bg=color1, command=lambda: Add(3), height=1, width=7)
button3.grid(row=2, column=2)
button4 = tk.Button(root, text=' 4 ', bg=color1, command=lambda: Add(4), height=1, width=7)
button4.grid(row=3, column=0)
button5 = tk.Button(root, text=' 5 ', bg=color1, command=lambda: Add(5), height=1, width=7)
button5.grid(row=3, column=1)
button6 = tk.Button(root, text=' 6 ', bg=color1, command=lambda: Add(6), height=1, width=7)
button6.grid(row=3, column=2)
button7 = tk.Button(root, text=' 7 ', bg=color1, command=lambda: Add(7), height=1, width=7)
button7.grid(row=4, column=0)
button8 = tk.Button(root, text=' 8 ', bg=color1, command=lambda: Add(8), height=1, width=7)
button8.grid(row=4, column=1)
button9 = tk.Button(root, text=' 9 ', bg=color1, command=lambda: Add(9), height=1, width=7)
button9.grid(row=4, column=2)
button0 = tk.Button(root, text=' 0 ', bg=color1, command=lambda: Add(0), height=1, width=7)
button0.grid(row=5, column=0)

add = tk.Button(root, text=' + ', bg=color2, command=lambda: Add("+"), height=1, width=7)
add.grid(row=2, column=3)
subtract = tk.Button(root, text=' - ', bg=color2, command=lambda: Add("-"), height=1, width=7)
subtract.grid(row=3, column=3)
multiply = tk.Button(root, text=' * ', bg=color2, command=lambda: Add("*"), height=1, width=7)
multiply.grid(row=4, column=3)
divide = tk.Button(root, text=' / ', bg=color2, command=lambda: Add("/"), height=1, width=7)
divide.grid(row=5, column=3)

② 程序分析

创建10个数字按钮和4个运算符按钮,并用grid()方法将它们添加到主窗口上。每个按钮都分配了相应的数字或符号,并与Add函数相关联以便将它们添加到输入框中。

3.9 创建等于号和清除按钮

① 程序设计

equal = tk.Button(root, text=' = ', bg=color3, command=Result, height=1, width=7)
equal.grid(row=5, column=2)
clear = tk.Button(root, text='Clear', bg=color4, command=Clear, height=1, width=7)
clear.grid(row=5, column=1)

② 程序分析

为等于号和清除按钮创建两个单独的按钮,并将它们添加到主窗口上。为等于号按钮分配Result函数并为清除按钮分配Clear函数。

四、功能实现

① 加法

12

② 减法

3
4

③ 乘法

5
6

④ 除法

除零错误

7
8

正常输出

9
10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/755495.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决打开excel时报错 “不能使用对象链接和嵌入”

问题截图 打开excel文件或者插入对象时,直接弹出不能使用对象链接和嵌入报错信息。 解决方法 按 winr 组合快捷键,打开运行,输入 dcomcnfg.exe 按回车确定 此时进入到组件服务管理界面,依次选择 组件服务-计算机-我的电脑-DOCM…

Vue+Node(Egg框架)实现文件上传保存至本地和下载文件

文章目录 1、前端代码2、后端代码 本文Node搭建的服务器是基于egg框架搭建,如果使用其他服务器端框架,可参考部分代码,不保证所有框架都能实现 实现效果: 1、前端代码 前端部分vue利用的element-ui文件上传组件,相关…

C++服务器框架开发11——编译调试1/cmake学习

该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。 其教学视频见:[C高级教程]从零开始开发服务器框架(sylar) 上一篇:C服务器框架开发10——日志系统1~9代码 C服务器框架开发11——编译调试1/cmake学习 目前进度ubuntu下的cmake学习简单样例同…

【论文笔记】SINE: SINgle Image Editing with Text-to-Image Diffusion Models

声明 不定期更新自己精度论文,通俗易懂,初级小白也可以理解 涉及范围:深度学习方向,包括 CV、NLP 论文标题:SINE: SINgle Image Editing with Text-to-Image Diffusion Models 论文链接:https://www.seman…

ESXI 安装win10详细步骤

在esix安装win10安装过程遇到了坑,发现必须对具体选项进行设置后才可,做下记录: 1、CPU设置 2、硬盘 3、网络适配器 4、驱动器 5、虚拟机选项

LangChain大型语言模型(LLM)应用开发(四):QA over Documents

LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…

动手学深度学习——图像分类数据集(代码详解)

目录 1. 图像分类数据集1.1 读取数据集1.2 读取小批量1.3 整合所有组件1.4 小结 1. 图像分类数据集 这里采用Fashion-MNIST数据集 torchvision:torch类型的可视化包,一般计算机视觉和数据可视化需要使用from torchvision import transforms:…

kotlin forEach循环return/break

kotlin forEach循环return/break fun main(args: Array<String>) {var a mutableListOf("0", "1", "2", "3", "4")var b mutableListOf<String>()a.forEachIndexed { index, s ->if (index > 2) {retu…

CGY-OS 正式开源!

一个初中生自己编写的一个很LOW的“OS”&#xff0c;编写不易&#xff0c;不喜勿喷&#xff1b;耗时巨大&#xff0c;引用时请说明。 接下来&#xff0c;让我们一起学习使用cgyOS。 零、配置 下载本程序后&#xff0c;在Python3.10环境下使用pip安装pygame和keyboard的最新版本…

Java二叉树

目录 一、树形结构 1.1 概念 1.2 树的性质 1.3 树的表示形式 二、二叉树 2.1 概念 2.2 两种特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储 2.5 二叉树的基本操作 2.5.1 二叉树的遍历 2.5.2 二叉树的基本操作 一、树形结构 1.1 概念 树是一种非线性的数据结构&#xff0…

H3C-Cloud Lab-实验-DHCP中继实验

实验需求&#xff1a; 1、按照图示配置IP地址 2、配置R1为DHCP服务器&#xff0c;能够跨网段为192.168.2.0/24网段自动分配IP地址。要求分配DNS地址为202.103.24.68和202.103.0.117 3、PC3获取IP地址后&#xff0c;能够访问到192.168.1.1 实验拓扑图&#xff1a; 连接CRT 设…

Linux5.97 Ceph集群

文章目录 计算机系统5G云计算第四章 LINUX Ceph集群一、Ceph1.存储基础1&#xff09;单机存储设备2&#xff09;单机存储的问题3&#xff09;商业存储解决方案4&#xff09;分布式存储&#xff08;软件定义的存储 SDS&#xff09;5&#xff09;分布式存储的类型 2.Ceph 简介3.C…

tmux安装及使用

tmux安装及使用 tmux是一款很好使用的终端工具&#xff0c;配合shell脚本使用非常方便。 一、tmux安装 终端输入命令&#xff1a; sudo apt-get install tmux二、tmux使用 首先需要对tmux使用的名词有一个基本了解&#xff1a; session &#xff1a;会话 window : 窗口 pa…

职责链(Chain of responsibility)模式

目录 处理过程应用场景参与者协作效果实现相关模式应用与思考类图 职责链(Chain of responsibility)是一种对象行为模式&#xff0c;可以使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递…

快速配置 Rust 开发环境并编写一个小应用

安装: curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh 更新: Rust 的升级非常频繁. 如果安装 Rustup 后已有一段时间,那么很可能 Rust 版本已经过时, 运行 rustup update 获取最新版本的 Rust rustc&#xff1a;编译Rust程序 rustc只适合简单的Rust程序&#xf…

5G全网通工业三防平板Windows移动电脑

当今科技领域的快速发展为我们的生活带来了许多便利和高效性能。在这个数字化时代&#xff0c;移动设备已成为我们生活的重要组成部分。在这一领域&#xff0c;搭载全新第12代英特尔酷睿Mi5-1235U/i7-1255U处理器的工业三防平板Windows移动电脑无疑是一款引人注目的产品。 这款…

mysql获取附近的店并显示当前距离并由近到远显示

1、创建测试数据 CREATE TABLE store (id int(11) NOT NULL AUTO_INCREMENT,name varchar(50) NOT NULL COMMENT 商家名称,address varchar(200) NOT NULL COMMENT 商家地址,coordinates varchar(50) NOT NULL COMMENT 经纬度,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT…

阿卡西斯 USB4 雷电4 移动硬盘盒做Mac系统盘 体验

硬盘盒(USB4 JHL7440 RTL9210B) 无风扇版本(型号 TBU405 659RMB). 发热大 所以官方出了带风扇版本,我的是不带风扇的. 我是三星990pro组合. 我是把mac系统直接安装到硬盘盒的硬盘里面里面 这是刚买时候的速度 这是当系统重度使用(写代码 大数据环境) 4个月后的硬盘速度测试…

DBeaver设置主题

一、下载包 帮助-》Install new software Eclipse Update Site 勾选一直下一步&#xff0c;直到安装完&#xff0c;会提示重启&#xff0c;重启设置主题即可 二、设置主题 窗口-》首选项-》DevStyle

快速上手一个I2C传感器 | MAX6884

老老实实看DataSheet吧&#xff0c;查找手册有以下几种途径&#xff1a; 1&#xff09;到芯片厂商官网去下载资料&#xff1b; 2&#xff09;在芯片器件采购平台搜索&#xff0c;如立创商城、半导小芯&#xff1b; 有原厂或代理翻译的中文手册&#xff0c;或者国产芯片中文手…