当前位置: 首页 > news >正文

python 实现一个简单的计算器

python 实现一个简单的计算器

本文主要整合下tkinter ,实现下简单的计算器.

代码如下:

#!/usr/bin/python3
# -*- coding: UTF-8 -*-
"""@Author: zh@Time 2023/12/2 下午13:01  .@Email:@Describe:
"""
import tkinter as tk# 创建计算器窗口
root = tk.Tk()
root.title("计算器")
# root.geometry("800x800+100+100")input = tk.Entry(root, width=50, borderwidth=4)
input.grid(row=0, column=0, columnspan=3, padx=20, pady=20)def btnClick(number):current = input.get()input.delete(0, tk.END)input.insert(0, str(current) + str(number))def clear():input.delete(0, tk.END)def add():current = input.get()global first_numglobal mathmath = "add"first_num = float(current)clear()def subtract():current = input.get()global first_numglobal mathmath = "subtract"first_num = float(current)clear()def multiply():current = input.get()global first_numglobal mathmath = "multiply"first_num = float(current)clear()def divide():current = input.get()global first_numglobal mathmath = "divide"first_num = float(current)clear()def equals():second_number = input.get()clear()if math == "add":input.insert(0, first_num + float(second_number))elif math == "subtract":input.insert(0, first_num - float(second_number))elif math == "multiply":input.insert(0, first_num * float(second_number))elif math == "divide":input.insert(0, first_num / float(second_number))btn1 = tk.Button(root, padx=40, pady=20, text="1", command=lambda: btnClick(1))
btn2 = tk.Button(root, padx=40, pady=20, text="2", command=lambda: btnClick(2))
btn3 = tk.Button(root, padx=40, pady=20, text="3", command=lambda: btnClick(3))btn4 = tk.Button(root, padx=40, pady=20, text="4", command=lambda: btnClick(4))
btn5 = tk.Button(root, padx=40, pady=20, text="5", command=lambda: btnClick(5))
btn6 = tk.Button(root, padx=40, pady=20, text="6", command=lambda: btnClick(6))btn7 = tk.Button(root, padx=40, pady=20, text="7", command=lambda: btnClick(7))
btn8 = tk.Button(root, padx=40, pady=20, text="8", command=lambda: btnClick(8))
btn9 = tk.Button(root, padx=40, pady=20, text="9", command=lambda: btnClick(9))btn0 = tk.Button(root, padx=40, pady=20, text="0", command=lambda: btnClick(0))
btnAdd = tk.Button(root, padx=40, pady=20, text="+", command=lambda: add())
btnSubtract = tk.Button(root, padx=42, pady=20, text="-", command=lambda: subtract())
btnMultiply = tk.Button(root, padx=40, pady=20, text="x", command=lambda: multiply())
btnDivide = tk.Button(root, padx=40, pady=20, text="➗", command=lambda: divide())
btnEquals = tk.Button(root, padx=40, pady=20, text="=", command=lambda: equals())
btnClear = tk.Button(root, padx=120, pady=20, text="clear", command=lambda: clear())# 布局
btn1.grid(row=1, column=0)
btn2.grid(row=1, column=1)
btn3.grid(row=1, column=2)btn4.grid(row=2, column=0)
btn5.grid(row=2, column=1)
btn6.grid(row=2, column=2)btn7.grid(row=3, column=0)
btn8.grid(row=3, column=1)
btn9.grid(row=3, column=2)btn0.grid(row=4, column=0)
btnAdd.grid(row=4, column=1)
btnSubtract.grid(row=4, column=2)btnMultiply.grid(row=5, column=0)
btnDivide.grid(row=5, column=1)
btnEquals.grid(row=5, column=2)btnClear.grid(row=6, column=0, columnspan=3)root.mainloop()

相关文章:

python 实现一个简单的计算器

python 实现一个简单的计算器 本文主要整合下tkinter ,实现下简单的计算器. 代码如下: #!/usr/bin/python3 # -*- coding: UTF-8 -*- """Author: zhTime 2023/12/2 下午13:01 .Email:Describe: """ import tkinter as tk# 创建计算器窗口 ro…...

前端对浏览器的理解

浏览器的主要构成 用户界面 - 包括地址栏、后退/前进按钮、书签目录等,也就是你所看到的除了用来显示你所请求页面的主窗口之外的其他部分。 浏览器引擎 - 用来查询及操作渲染引擎的接口。 渲染引擎 - 用来显示请求的内容&#…...

Linux(openssl):X509_verify通过ca证书的public key验证证书的签名

/docs/man3.0/man3/X509_verify.html (openssl.org) 提供了方法用于通过ca证书的public key验证证书的签名 //verify_cert.hpp #include <string> #include <memory> #include <filesystem> #include <openssl/pem.h>using namespace std; namespace …...

全面的.NET微信网页开发之JS-SDK使用步骤、配置信息和接口请求签名生成详解

JSSDK使用步骤 步骤一:绑定安全域名&#xff1a; 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 步骤二:引入JS文件&#xff1a; 在需要调用JS接口的页面引入如下JS文件&#xff0c;&#xff08;支持https&#xff09;&#xff1a;http://…...

深入了解汉字转拼音转换工具:原理与应用

一、引言 汉字作为世界上最古老、最具象形意的文字之一&#xff0c;承载了数千年的历史文明。然而&#xff0c;在现代信息技术环境下&#xff0c;汉字的输入、输出和检索等方面存在一定的局限性。拼音作为汉字的一种音标表达方式&#xff0c;能够有效地解决这些问题。本文将为…...

沈阳师范大学期末考试复习pta循环数组函数指针经典编程题汇总+代码分析

目录 前言&#xff1a;临近期末&#xff0c;接下来给大家分享一些经典的编程题&#xff0c;方便大家复习。不一定难&#xff0c;但都是入门的好题&#xff0c;尽可能的吃透彻。因为据说期末考试的题很多来自pta上面的原题。 对于一些语言我是用c来写的&#xff0c;不妨碍理解…...

【面试攻略】Oracle中blob和clob的区别及查询修改方法

大家好&#xff0c;我是小米&#xff0c;欢迎来到小米的技术小屋&#xff01;今天我们要一起来聊聊一个在面试中常常被问到的问题——“Oracle中Blob和Clob有啥区别&#xff0c;在代码中怎么查询和修改这两个类型的字段里的内容&#xff1f;”别急&#xff0c;跟着小米一步步揭…...

An illegal reflective access operation has occurred问题记录

报错 2023-11-30T01:08:18.7440800 [ERROR] [system.err] WARNING: An illegal reflective access operation has occurred 2023-11-30T01:08:18.7450800 [ERROR] [system.err] WARNING: Illegal reflective access by com.intellij.ui.JreHiDpiUtil to method sun.java2d.Sun…...

抓取检测(Grasp Dection)

抓取检测 抓取检测被定义为能够识别任何给定图像中物体的抓取点或抓取姿势。抓取策略应确保对新物体的稳定性、任务兼容性和适应性&#xff0c;抓取质量可通过物体上接触点的位置和手的配置来测量。为了掌握一个新的对象&#xff0c;完成以下任务&#xff0c;有分析方法和经验…...

人工智能学习4(特征选择)

编译工具&#xff1a;PyCharm 有些编译工具在绘图的时候不需要写plt.show()或者是print就可以显示绘图结果或者是显示打印结果&#xff0c;pycharm需要&#xff08;matplotlib.pyplot&#xff09; 文章目录 编译工具&#xff1a;PyCharm 特征选择嵌入法特征选择练习&#xff…...

vue中keep-alive的使用

什么是keep-alive&#xff1f; keep-alive是一个内置组件&#xff0c;用于缓存和管理组件的状态。 当 keep-alive包裹一个组件时&#xff0c;这个组件的状态将会被缓存起来&#xff0c;而不是每次重新渲染。这在多个视图之间切换时特别有用&#xff0c;可以避免重复的创建和销…...

2023年第十二届数学建模国际赛小美赛B题工业表面缺陷检测求解分析

2023年第十二届数学建模国际赛小美赛 B题 工业表面缺陷检测 原题再现&#xff1a; 金属或塑料制品的表面缺陷不仅影响产品的外观&#xff0c;还可能对产品的性能或耐久性造成严重损害。自动表面异常检测已经成为一个有趣而有前景的研究领域&#xff0c;对视觉检测的应用领域有…...

2023全球数字贸易大赛-web3,区块链,诺威信,浪潮云,微众区块链,福建中科星泰,瓴羊区块链,联想-元宇宙,硅基智能-

目录 诺威信B隐私计算平台 浪潮云=星火连-澳优码 HyperChain 产品介绍...

计算机网络一:TCP/IP基础概念和常见面试题

TCP/IP是一种网络通信协议族&#xff0c;它由两个主要的协议构成&#xff1a;TCP&#xff08;传输控制协议&#xff09;和IP&#xff08;网络互联协议&#xff09;。TCP负责数据的可靠传输&#xff0c;而IP则负责数据的路由和转发。 TCP/IP有哪些层次结构&#xff1f;每个层次的…...

图论|684.冗余连接 685. 冗余连接 II

684.冗余连接 题目&#xff1a;树可以看成是一个连通且 无环 的 无向 图。 给定往一棵 n 个节点 (节点值 1&#xff5e;n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间&#xff0c;且这条附加的边不属于树中已存在的边。图的信息记录于长度为 n 的二维数组 …...

依据小兔鲜项目,总结Javascript数组常用方法

find 在向购物车添加某种规格的商品时&#xff0c;查找购物车列表中是否已经存在该规格的商品 find()方法传入一个回调函数&#xff0c;代表对数组每一项item的校验要求 返回数组中第一个符合条件的元素的值&#xff0c;如果没有则返回undefined const item cartList.value…...

制作飞腾(arm)芯片架构的nexus镜像

nexus官方没有arm架构的镜像&#xff0c;下面介绍一种自己制作镜像的方式 1、事先准备 在一个arm架构机器上安装docker下载nexus的linux版(https://www.sonatype.com/download-oss-sonatype)下载centos的arm架构镜像(docker pull centos-centos8.4.2105)下载arm版本的java8(ht…...

Git 标签管理

前言 标签 tag&#xff0c;就相当于对 某一次的 commit 做一个标识&#xff0c;起了一个别名&#xff0c;例如&#xff1a;在某个项目发布版本的时候&#xff0c;可针对最后一次 commit 起一个别名 v1.0 来标识这一次的commit。tag 的作用&#xff1a;commit id 相对于 tag 是很…...

多级缓存自用

1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: •请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 •Redis缓存失效时,会对数据库产生冲击 多级缓存就是充分利用请求处理的每个环节,添加缓…...

1.1卷积的作用

上图解释了1∗1卷积如何适用于尺寸为H∗W∗D的输入层&#xff0c;滤波器大小为1∗1∗D&#xff0c;输出通道的尺寸为H∗W∗1。如果应用n个这样的滤波器&#xff0c;然后组合在一起&#xff0c;得到的输出层大小为H∗W∗n。 1.1∗1卷积的作用 调节通道数 由于 11 卷积并不会改…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...