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

Python - 各种计算器合集【附源码】

计算器合集

      • 一:极简版计算器
      • 二:简易版计算器
      • 三:不简易的计算器
      • 四:还可以计算器

一:极简版计算器

运行效果:
在这里插入图片描述

import tkinter as tk
import tkinter.messagebox
win = tk.Tk()
win.title("计算器")
win.geometry('650x600')b=tk.Label(win, text='计算器',justify=tk.CENTER, height=2 , width=50 ,font=('楷体', 20),background='lightcyan')
b.grid(row=0,columnspan=6)b1=tk.Label(win, text='a:',justify=tk.CENTER, height=2 , width=5 ,font=('楷体', 15))
b1.grid(row=1,column=0)
a1 = tk.Entry(win, justify=tk.LEFT, width=15 , font=('楷体', 15))
a1.grid(row=1,column=1)b2 = tk.Label(win, text='b:',justify=tk.CENTER, height=2 , width=5 , font=('楷体', 15))
b2.grid(row=2,column=0)
a2 = tk.Entry(win, justify=tk.LEFT, width=15 , font=('楷体', 15) )  
a2.grid(row=2,column=1)txt = tk.Text(win,height=20, width=40 ,font=('楷体', 15))
txt.grid(row=1,column=4,rowspan=4,columnspan=4)num=0
def sum():if a1.get()=='' or a2.get()=='':return tkinter.messagebox.showinfo('消息提示', '输入不能为空')global numnum += 1a = float(a1.get())b = float(a2.get())c = a + bs = str('%d'%a + ' + '+'%d'%b + ' = ' + '%d'%c)if num%2==0:s=s+ '\n'print(num)else:s=s+'\t'txt.insert(tk.END,s)tkinter.messagebox.showinfo('消息提示', '求和结果是:%d'%c)a1.delete(0, tk.END)a2.delete(0, tk.END)def multiply():if a1.get()=='' or a2.get()=='':return tkinter.messagebox.showinfo('消息提示', '输入不能为空')global numnum += 1a = float(a1.get())b = float(a2.get())c = a * bs = str('%d' % a + ' * ' + '%d' % b + ' = ' + '%d' % c)if num%2==0:s=s+ '\n'print(num)else:s=s+'\t'txt.insert(tk.END, s)tkinter.messagebox.showinfo('消息提示', '求积结果是:%d'%c)a1.delete(0, tk.END)a2.delete(0, tk.END)
def subtract():if a1.get()=='' or a2.get()=='':return tkinter.messagebox.showinfo('消息提示', '输入不能为空')global numnum += 1a = float(a1.get())b = float(a2.get())c = a - bs = str('%d' % a + ' - ' + '%d' % b + ' = ' + '%d' % c)if num%2==0:s=s+ '\n'print(num)else:s=s+'\t'txt.insert(tk.END, s)tkinter.messagebox.showinfo('消息提示', '求差结果是:%d'%c)a1.delete(0, tk.END)a2.delete(0, tk.END)
def divide():if a1.get()=='' or a2.get()=='':return tkinter.messagebox.showinfo('消息提示', '输入不能为空')global numnum += 1a = float(a1.get())b = float(a2.get())if float(b)==0.0:tkinter.messagebox.showinfo('消息提示', '除数不能为零!!!')a2.delete(0 , tk.END)else:c = a / bs = str('%d' % a + ' / ' + '%d' % b + ' = ' + '%d' % c)if num % 2 == 0:s = s + '\n'print(num)else:s = s + '\t'txt.insert(tk.END, s)tkinter.messagebox.showinfo('消息提示', '求商结果是:%d'%c)a1.delete(0, tk.END)a2.delete(0, tk.END)
a4 = tk.Button(win, text='求和',justify=tk.CENTER, width=10, font=('楷体', 15) ,command = lambda :sum() )
a4.grid(row=3, column=0)
a5 = tk.Button(win, text='求积', justify=tk.CENTER, width=10 , font=('楷体', 15), command = lambda :multiply())
a5.grid(row=3, column=1)
a6 = tk.Button(win, text='求差', justify=tk.CENTER, width=10, font=('楷体', 15), command = lambda :subtract())
a6.grid(row=4, column=0)
a7 = tk.Button(win, text='求商', justify=tk.CENTER, width=10, font=('楷体', 15), command = lambda :divide())
a7.grid(row=4, column=1)
win.mainloop()

二:简易版计算器

运行效果:
在这里插入图片描述

import tkinter as tkclass Calculator(tk.Tk):def __init__(self):super().__init__()self.title("Calculator")self.geometry("400x400")self.result_var = tk.StringVar()self.result_var.set("")self.build_ui()def build_ui(self):# 创建输入框entry = tk.Entry(self, textvariable=self.result_var, font=("Arial", 24), bd=10, insertbackground="white", width=14, justify="right")entry.grid(row=0, column=0, columnspan=4)# 创建按钮self.create_button("7", 1, 0)self.create_button("8", 1, 1)self.create_button("9", 1, 2)self.create_button("÷", 1, 3)self.create_button("4", 2, 0)self.create_button("5", 2, 1)self.create_button("6", 2, 2)self.create_button("×", 2, 3)self.create_button("1", 3, 0)self.create_button("2", 3, 1)self.create_button("3", 3, 2)self.create_button("-", 3, 3)self.create_button("C", 4, 0)self.create_button("0", 4, 1)self.create_button("=", 4, 2)self.create_button("+", 4, 3)def create_button(self, text, row, column):button = tk.Button(self, text=text, font=("Arial", 18), width=5, height=2, command=lambda: self.on_button_click(text))button.grid(row=row, column=column)def on_button_click(self, text):if text == "C":self.result_var.set("")elif text == "=":try:result = eval(self.result_var.get().replace("×", "*").replace("÷", "/"))self.result_var.set(result)except Exception as e:self.result_var.set("Error")else:current_value = self.result_var.get()self.result_var.set(current_value + text)if __name__ == "__main__":calculator = Calculator()calculator.mainloop()

三:不简易的计算器

运行效果:
在这里插入图片描述

import tkinter as tkclass Calc(tk.Tk):"""计算器窗体类"""def __init__(self):"""初始化实例"""tk.Tk.__init__(self)self.title("计算器")self.memory = 0  # 暂存数值self.create()def create(self):"""创建界面"""btn_list = ["C", "M->", "->M", "/","7", "8", "9", "*","4", "5", "6", "-","1", "2", "3", "+","+/-", "0", ".", "="]r = 1c = 0for b in btn_list:self.button = tk.Button(self, text=b, width=5,command=(lambda x=b: self.click(x)))self.button.grid(row=r, column=c, padx=3, pady=6)c += 1if c > 3:c = 0r += 1self.entry = tk.Entry(self, width=24, borderwidth=2,bg="yellow", font=("Consolas", 12))self.entry.grid(row=0, column=0, columnspan=4, padx=8, pady=6)def click(self, key):"""响应按钮"""if key == "=":  # 输出结果result = eval(self.entry.get())self.entry.insert(tk.END, " = " + str(result))elif key == "C":  # 清空输入框self.entry.delete(0, tk.END)elif key == "->M":  # 存入数值self.memory = self.entry.get()if "=" in self.memory:ix = self.memory.find("=")self.memory = self.memory[ix + 2:]self.title("M=" + self.memory)elif key == "M->":  # 取出数值if self.memory:self.entry.insert(tk.END, self.memory)elif key == "+/-":  # 正负翻转if "=" in self.entry.get():self.entry.delete(0, tk.END)elif self.entry.get()[0] == "-":self.entry.delete(0)else:self.entry.insert(0, "-")else:  # 其他键if "=" in self.entry.get():self.entry.delete(0, tk.END)self.entry.insert(tk.END, key)if __name__ == "__main__":Calc().mainloop()

四:还可以计算器

运行效果:
在这里插入图片描述

import tkinter as tkt = ""
color1 = "skyblue"
color2 = "yellow"
color3 = "pink"
color4 = "red"def Add(num):global tt = t + str(num)result.set(t)def Result():try:global ttotal = str(eval(t))result.set(total)t = ""except:result.set(" error ")t = ""def Clear():global tt = ""result.set("")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))result = tk.StringVar()entrys = tk.Entry(root, textvariable=result, width=22)
entrys.grid(columnspan=4, ipadx=70)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)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)root.mainloop()

相关文章:

Python - 各种计算器合集【附源码】

计算器合集 一:极简版计算器二:简易版计算器三:不简易的计算器四:还可以计算器 一:极简版计算器 运行效果: import tkinter as tk import tkinter.messagebox win tk.Tk() win.title("计算器")…...

【已解决】better-scroll在PC端如何开启鼠标滚动以及如何始终显示滚动条

总结 需要安装插件 mouse-wheel 和 scrollbar 在PC端如何开启鼠标滚动? 需要安装官方提供的滚动插件:mouse-wheel https://better-scroll.github.io/docs/zh-CN/plugins/mouse-wheel.html 为了开启鼠标滚动功能,你需要首先引入 mouseWheel 插件&…...

AJAX 综合案例-day2

Bootstrap 弹框 功能:不离开当前页面,显示单独内容,供用户操作 步骤: 1. 引入 bootstrap.css 和 bootstrap.js 2. 准备 弹框标签 ,确认结构 3. 通过 自定义属性 ,控制弹框的 显示 和 隐藏 1. 通过属性…...

【Esp32连接微信小程序蓝牙】附Arduino源码《 返回10007 相同特征id冲突问题》

前言 最近接了一个外包,发现了esp32连接小程序会有很多bug,所以接下来会慢慢更新解决方案,还是需要多接触项目才能进步呀兄弟们! 附上uuid的生成链接: // See the following for generating UUIDs: // https://www.uu…...

并发控制技术

事物的隔离性实现主要依赖于多种并发控制技术,这些技术确保在并发执行的事物中,一个事物的操作不会被其他事物干扰。并发控制技术按照其对可能冲突的操作采取的不同策略可以分为乐观并发控制和悲观并发控制两大类。 基于封锁的并发控制 对于并发可能冲突的操作,比如读-写,…...

什么是网段

一、A类地址的网段: 情况1:最小的网段就是xxx.0.0.0,直接使用第一段的网络地址做网段。 情况2:如果希望网段允许的主机数量的范围缩小,扩大网段值即可,xxx.xxz.zzz.zzz,比如xxx.xxx.xzz.zzz&…...

PHP和Mysql前后端交互效果实现

一、连接数据库基本函数 mysqli_connect(); 作用&#xff1a;创建数据库连接&#xff0c;打开一个新的mysql的连接。传参顺序&#xff1a;数据库地址、数据库账号、数据库密码 <?phpecho mysqli_connect("localhost",root,root) ?> /*结果&#xff1a;F…...

vue小总结

知识总结 【 1 】es6 语法总结 # let 定义变量 # const定义常量 ------块级作用域---- # var 以后尽量少用&#xff0c;函数作用域var 在 JavaScript 中是函数作用域或全局作用域。而 let 和 const 是块级作用域。 // 使用 var 声明全局变量 var globalVar "Im a globa…...

RapidLayout:中英文版面分析推理库

引言 继上一篇文章之后&#xff0c;我这里想着将360发布的版面分析模型整合到现有的rapid_layout仓库中&#xff0c;便于大家快速使用。 不曾想到&#xff0c;我这整理工作越做越多了&#xff0c;好在整体都是往更好方向走。 起初&#xff0c;rapid_layout项目是在RapidStru…...

postman 工具下载安装使用教程_postman安装

本文讲解的是postman工具下载、Postman安装步骤、postman下载、postman安装教程。Postman是一款流行的API测试工具&#xff0c;它提供了一个用户友好的界面&#xff0c;用于发送和测试API请求&#xff0c;并且可以轻松地按需管理和组织请求。 这使得开发人员和测试人员能够更高…...

【数学建模】——【新手小白到国奖选手】——【学习路线】

专栏&#xff1a;数学建模学习笔记 目录 ​编辑 第一阶段&#xff1a;基础知识和工具 1.Python基础 1.学习内容 1.基本语法 2.函数和模块 3.面向对象编程 4.文件操作 2.推荐资源 书籍&#xff1a; 在线课程&#xff1a; 在线教程&#xff1a; 2.数学基础 1.学习内…...

CSS文本超限后使用省略号代替

方案一&#xff1a; 只显示一行&#xff0c;超限后使用省略号代替 .detail {overflow: hidden;text-overflow: ellipsis;white-space: nowrap; }方案二&#xff1a; 显示多行&#xff0c;到最后一行还没有显示完&#xff0c;则最后一行多出来的部分使用省略号代替。 .detai…...

多线程下JVM内存模型 和 volatile关键字

1、线程的概念 线程&#xff08;thread&#xff09;是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流&#xff0c;一个进程中可以并发多个线程&#xff0c;每条线程并行执行不同的任务…...

Uniapp实现页面滚动Tab吸顶,点击tab内容滚动到对应tab内容位置

思路&#xff1a;运用uniapp原生提供方法uni.createSelectorQuery()获取滚动对应节点的信息&#xff0c;即节点距离页面顶部的距离&#xff0c;再通过uniapp原生监听页面滚动事件onPageScroll&#xff0c;获取页面内容滚动的高度&#xff0c;二者相加即定位到对应节点的滚动距离…...

在Elasticsearch中-SpaceJam一个全文搜索的实例

在Elasticsearch中进行全文搜索通常涉及几个步骤&#xff1a;创建索引、定义映射、索引文档、执行搜索查询。下面我将通过一个名为"SpaceJam"的虚构实例来演示如何进行全文搜索。 ### 步骤 1: 创建索引 首先&#xff0c;我们需要创建一个索引。在这个例子中&#x…...

Microsoft Edge浏览器安装crx拓展插件教程

1、首先打开edge浏览器&#xff0c;点击顶部地址栏。 2、在地址栏中输入"edge://flags/#extensions-on-edge-urls"并按下回车。2、在地址栏中输入"edge://flags/#extensions-on-edge-urls"并按下回车。 3、进入后&#xff0c;将图示选项改为“已禁用”。 …...

陈晓婚前婚后大变样

陈晓婚前婚后大变样&#xff1f;陈妍希揭秘甜蜜与现实的碰撞在娱乐圈的星光璀璨中&#xff0c;有一对夫妻总是津津乐道&#xff0c;那就是陈晓和陈妍希。他们的爱情故事&#xff0c;从荧幕到现实&#xff0c;一直备受关注。然而&#xff0c;近日陈妍希在节目中透露&#xff0c;…...

Linux sudo -i取消密码的方法

直接修改 /etc/sudoers 文件来实现 sudo -i 无需密码的配置。以下是具体步骤&#xff1a; 步骤 打开终端并使用 visudo 命令编辑 /etc/sudoers 文件 使用 visudo 编辑 sudoers 文件是推荐的方法&#xff0c;因为它会在保存前进行语法检查&#xff0c;防止出现配置错误。 sudo …...

PMP考试多少分才算合格通过?

PMP是美国颁发的专业资格认证,其考试采用的是国外的评分体系。考试内容被划分为3大部分:人、过程和商业环境,每个部分所占的权重不同。考试形式为180个单选和多选题,其中有25题不计分。考试可能会抽到错误或未回答的题目,也可能抽到正确答题的题目。最终根据NBTA的4个等级进行综…...

原生js写数据自动纵向滚动,鼠标移入后停止滚动可手动滚动,鼠标移出转自动

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>滚动页面</title><link rel"styleshee…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库&#xff0c;用于数据验证和设置管理&#xff0c;通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发&#xff08;如 FastAPI&#xff09;、配置管理和数据解析&#xff0c;核心功能包括&#xff1a; 数据验证&#xff1a;通过…...

AWS vs 阿里云:功能、服务与性能对比指南

在云计算领域&#xff0c;Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商&#xff0c;各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5]&#xff0c;我将从功能、服务和性能三个方面进行结构化对比分析&#…...