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(); 作用:创建数据库连接,打开一个新的mysql的连接。传参顺序:数据库地址、数据库账号、数据库密码 <?phpecho mysqli_connect("localhost",root,root) ?> /*结果:F…...

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

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

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

【数学建模】——【新手小白到国奖选手】——【学习路线】
专栏:数学建模学习笔记 目录 编辑 第一阶段:基础知识和工具 1.Python基础 1.学习内容 1.基本语法 2.函数和模块 3.面向对象编程 4.文件操作 2.推荐资源 书籍: 在线课程: 在线教程: 2.数学基础 1.学习内…...

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

多线程下JVM内存模型 和 volatile关键字
1、线程的概念 线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务…...

Uniapp实现页面滚动Tab吸顶,点击tab内容滚动到对应tab内容位置
思路:运用uniapp原生提供方法uni.createSelectorQuery()获取滚动对应节点的信息,即节点距离页面顶部的距离,再通过uniapp原生监听页面滚动事件onPageScroll,获取页面内容滚动的高度,二者相加即定位到对应节点的滚动距离…...
在Elasticsearch中-SpaceJam一个全文搜索的实例
在Elasticsearch中进行全文搜索通常涉及几个步骤:创建索引、定义映射、索引文档、执行搜索查询。下面我将通过一个名为"SpaceJam"的虚构实例来演示如何进行全文搜索。 ### 步骤 1: 创建索引 首先,我们需要创建一个索引。在这个例子中&#x…...

Microsoft Edge浏览器安装crx拓展插件教程
1、首先打开edge浏览器,点击顶部地址栏。 2、在地址栏中输入"edge://flags/#extensions-on-edge-urls"并按下回车。2、在地址栏中输入"edge://flags/#extensions-on-edge-urls"并按下回车。 3、进入后,将图示选项改为“已禁用”。 …...

陈晓婚前婚后大变样
陈晓婚前婚后大变样?陈妍希揭秘甜蜜与现实的碰撞在娱乐圈的星光璀璨中,有一对夫妻总是津津乐道,那就是陈晓和陈妍希。他们的爱情故事,从荧幕到现实,一直备受关注。然而,近日陈妍希在节目中透露,…...
Linux sudo -i取消密码的方法
直接修改 /etc/sudoers 文件来实现 sudo -i 无需密码的配置。以下是具体步骤: 步骤 打开终端并使用 visudo 命令编辑 /etc/sudoers 文件 使用 visudo 编辑 sudoers 文件是推荐的方法,因为它会在保存前进行语法检查,防止出现配置错误。 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…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...

PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...

nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
如何通过git命令查看项目连接的仓库地址?
要通过 Git 命令查看项目连接的仓库地址,您可以使用以下几种方法: 1. 查看所有远程仓库地址 使用 git remote -v 命令,它会显示项目中配置的所有远程仓库及其对应的 URL: git remote -v输出示例: origin https://…...

Python环境安装与虚拟环境配置详解
本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南,适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者,都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...