当前位置: 首页 > 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…...

板凳----Linux/Unix 系统编程手册 25章 进程的终止

25.1 进程的终止&#xff1a;_exit()和exit() 440 1. _exit(int status)&#xff0c; status 定义了终止状态&#xff0c;父进程可调用 wait 获取。仅低8位可用&#xff0c;调用 _exit() 总是成功的。 2.程序一般不会调用 _exit()&#xff0c; 而是调用库函数 exit()。exit() …...

若依Ruoyi-vue和element admin的区别,该如何选择。

提到中后台的前端框架&#xff0c;每个人都能列举出很多&#xff0c;这其中提及率比较高的就是Ruoyi和element admin两款&#xff0c;很多小伙伴分不清二者&#xff0c;本文为大家详细讲解一下。 一、若依Ruoyi-vue是什么&#xff1f; 若依Ruoyi-Vue是一款基于 Vue.js 开发的…...

Sklearn之朴素贝叶斯应用

目录 sklearn中的贝叶斯分类器 前言 1 分类器介绍 2 高斯朴素贝叶斯GaussianNB 2.1 认识高斯朴素贝叶斯 2.2 高斯朴素贝叶斯建模案例 2.3 高斯朴素贝叶斯擅长的数据集 2.3.1 三种数据集介绍 2.3.2 构建三种数据 2.3.3 数据标准化 2.3.4 朴素贝叶斯处理数据 2.4 高斯…...

网络编程(二)TCP编程 TCP粘包问题

文章目录 一、TCP网络编程&#xff08;一&#xff09;流程&#xff08;二&#xff09;相关函数1. socket2. bind3. listen4. accept5. connect 二、收发函数&#xff08;一&#xff09;send函数&#xff08;二&#xff09;recv函数 三、TCP粘包问题&#xff08;一&#xff09;将…...

【总线】AXI总线:FPGA设计中的通信骨干

目录 AXI4&#xff1a;高性能地址映射通信的基石 AXI4-Lite&#xff1a;轻量级但功能强大的通信接口 AXI4-Stream&#xff1a;高速流数据传输的利器 结语&#xff1a;AXI总线在FPGA设计中的重要性 大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计…...

Cesium源码解析六(3dtiles属性获取、建筑物距离计算、建筑物着色及其原理分析)

快速导航 Cesium源码解析一&#xff08;搭建开发环境&#xff09; Cesium源码解析二&#xff08;terrain文件的加载、解析与渲染全过程梳理&#xff09; Cesium源码解析三&#xff08;metadataAvailability的含义&#xff09; Cesium源码解析四&#xff08;metadata元数据拓展…...

AI 情感聊天机器人之旅 —— 相关论文调研

开放域闲聊场景 Prompted LLMs as Chatbot Modules for Long Open-domain Conversation 发布日期&#xff1a;2023-05-01 简要介绍&#xff1a;作者提出了 MPC&#xff08;模块化提示聊天机器人&#xff09;&#xff0c;这是一种无需微调即可创建高质量对话代理的新方法&…...

WPF Prism框架搭建

WPF Prism框架搭建 1.引入Prism框架 在Nuget包管理器中搜索Prism&#xff0c;并添加到项目中 2.在项目中使用prism框架 2.1 修改app.xaml 删除项目中自带的StartupUri 修改Application节点为prism:PrismApplication 引入prism命名空间 <prism:PrismApplication x:C…...

MyBatisplus使用报错--Invalid bound statement

报错如下 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.lotus.mybatis.mapper.UserMapper.selectListat org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:235)at com.baomidou.mybatisplus.cor…...

QT-QPainter实现一个动态充电的电池

1、效果 2、核心代码 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer>...

wordpress 有的管理员不能发布视频代码/上海外包seo

内蒙古研究生考试已经结束&#xff0c;相信正在备战内蒙古考研的考生们已经做好了准备&#xff0c;每年参加研究生考试的考生都有几百万&#xff0c;那么你是怎么备考的呢?在各位数不清的备考方法中&#xff0c;小编相信多做考研试题&#xff0c;无疑是一种捷径&#xff0c;小…...

建设行政主管部门官方网站/seo优化排名方法

SQL Inject注入漏洞的防范 ​  代码层面&#xff08;也就是从底层&#xff0c;彻底的进行处理这个问题&#xff09; 对前端输入进行严格的转义和过滤 使用预处理和参数化&#xff08;Parameterized &#xff09;  网路层面&#xff08;常用的安全设备&#xff09; 通过W…...

像芥末堆做内容的网站/百度推广优化中心

在上一篇中&#xff0c;我们讲到了如何配置多个容器并且定制属于自己的镜像&#xff0c;但是容器的数据性能以及持久如何保证的&#xff1f;本篇将通过介绍Docker Volume来说明这个问题&#xff0c;涉及到的架构如下图所示&#xff1a;1、 说到Volume实际上有多种方式可以实现&…...

wordpress网站建设中/淘宝产品关键词排名查询

结构体是由不同数据类型的数据组成的集合体&#xff0c;声明形式如下&#xff1a;Struct 结构体名{数据类型说明符1 成员名1&#xff1b;数据类型说明符2 成员名2&#xff1b;..数据类型说明符n 成员名n&#xff1b;}&#xff1b;仅仅声明结构体类型是不够的&#xff0c;要使用…...

气动科技东莞网站建设/windows优化大师电脑版

转自&#xff1a;https://www.pinlue.com/article/2019/06/0401/039102979723.html...

铜川做网站的公司/今日国内新闻头条15条

许多世纪以来&#xff0c;风力机同水力机械一样&#xff0c;作为动力源替代人力、畜力&#xff0c;对生产力的发展发挥过重要作用。近代机电动力的广泛应用以及二十世纪50年代中东油田的发现&#xff0c;使风机发电机的发展缓慢下来。 70年代初期&#xff0c;由于“石油危机”…...