使用PyQt5设计一个简易计算器

目录

设计UI图

代码

结果展示


设计UI图

代码

 

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import QFileDialog, QMainWindow, QMessageBox
from untitled import Ui_MainWindow
import sysclass PyQtMainEntry(QMainWindow, Ui_MainWindow):def __init__(self):super().__init__()self.setupUi(self)# 用于存储当前输入的数字或表达式的一部分self.current_expression = ""# 用于存储上一次的运算结果,初始化为0self.previous_result = 0# 用于标记是否是连续运算,初始化为Falseself.is_continuous_operation = Falsedef slot1(self):"""当数字按钮1被点击时调用此函数其作用是将数字1添加到当前输入的表达式中"""self.append_to_expression('1')def slot2(self):self.append_to_expression('2')def slot3(self):self.append_to_expression('3')def slot4(self):self.append_to_expression('4')def slot5(self):self.append_to_expression('5')def slot6(self):self.append_to_expression('6')def slot7(self):self.append_to_expression('7')def slot8(self):self.append_to_expression('8')def slot9(self):self.append_to_expression('9')def slot10(self):self.append_to_expression('0')def slot11(self):self.append_to_expression('.')def slot12(self):self.append_to_expression('+')def slot13(self):self.append_to_expression('-')def slot14(self):self.append_to_expression('*')def slot15(self):self.append_to_expression('/')def slot16(self):"""当等号按钮被点击时调用此函数其作用是计算当前输入的表达式的值,并将结果显示在输入框中同时更新相关变量以便进行后续运算或输入"""try:result = self.evaluate_expression()self.lineEdit.setText(str(result))self.previous_result = resultself.is_continuous_operation = Trueself.current_expression = ""except Exception as e:QMessageBox.critical(self, "错误", f"计算出错: {e}")def append_to_expression(self, value):"""将传入的数字或运算符添加到当前表达式中Args:value: 要添加的数字或运算符,如'1'、'+'等根据is_continuous_operation的值来决定添加方式:- 如果是连续运算(is_continuous_operation为True),则将上一次的运算结果与传入的值拼接起来- 如果不是连续运算(is_continuous_operation为False),则直接将传入的值添加到当前表达式末尾最后将更新后的表达式显示在输入框中"""if self.is_continuous_operation:self.current_expression = str(self.previous_result) + valueself.is_continuous_operation = Falseelse:self.current_expression += valueself.lineEdit.setText(self.current_expression)def clear_screen(self):"""用于清空屏幕的函数,当点击C按钮时被调用此函数执行以下操作:- 将self.current_expression重置为空字符串,确保下次输入时不会基于旧内容拼接- 将self.is_continuous_operation重置为False,表示重新开始新的一轮输入,并非连续运算状态- 通过self.lineEdit.setText("")清空输入框中的显示内容,实现屏幕清空的视觉效果"""self.current_expression = ""self.is_continuous_operation = Falseself.lineEdit.setText("")def evaluate_expression(self):"""计算当前输入的表达式的值Returns:计算结果,如果表达式为空则返回上一次的运算结果首先获取当前表达式,如果表达式为空,则直接返回上一次的运算结果。否则,使用eval函数对表达式进行计算,如果计算过程中出现错误,则抛出异常"""expression = self.current_expressionif not expression:return self.previous_resulttry:result = eval(expression)return resultexcept Exception as e:raise eif __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)window = PyQtMainEntry()window.show()sys.exit(app.exec_())

结果展示

 

 

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

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

相关文章

音频模型介绍

在处理音频数据方面,有多种模型表现出色,它们在不同的音频处理任务上有着各自的优势: 自动编码器:包括多通道变分自动编码器、自回归模型和生成对抗网络等,这些模型在音乐生成领域取得了令人印象深刻的成果。 深度生成…

云计算基础:AWS入门指南

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 云计算基础:AWS入门指南 云计算基础:AWS入门指南 云计算基础:AWS入门指南 引言 AWS概述 什么…

动态规划-两个数组的dp问题——712.两个字符串的最小ASCII删除和

1.题目解析 题目来源 712.两个字符串的最小ASCII删除和——力扣 测试用例 2.算法原理 1.状态表示 由于如果直接求本题会发现无从下手,不妨根据正难则反的原理,反向求公共子序列的ASCII码最大值即可,于是就转化为求公共子序列的问题&#x…

elementui中的新增弹窗在新增数据成功后再新增 发现数据无法清除解决方法

elementui中的新增弹窗在新增数据成功后再新增 发现数据无法清除解决方法 试过网上其他方法,发现表单清空数据还是有问题,索性用下面方法解决: // 给弹框里面添加 v-ifvisible测试无问题,暂时先这样解决,如果有其他方法&#x…

python 天气数据可视化

Python爬取天气数据及可视化分析 https://blog.csdn.net/weixin_69423932/article/details/135184643

基于Arduino的RGB灯按键控制

一.简介 通过按键控制RGB灯分别显示7种颜色:红 、绿、 蓝、 黄、 青、 紫、 白。 二.按键控制RGB灯原理 1)RGB全彩LED: LED由三个颜色分别为:红(Red)、绿(Green)、蓝(Blue)的LED…

非关系型数据库(1)---MongoDB

目录 1.MongoDB 1.MongoDB的特点 2.MongoDB的应用场景 3.MongoDB与MySQL的比较 2.数据库操作 1. 创建数据库 2. 切换数据库 3. 查看所有数据库 4. 查看当前数据库 5. 删除数据库 6. 查看数据库统计信息 7. 备份数据库 8. 恢复数据库 9. 创建用户和授权 10. 删除用…

1. pytorch 中冻结模型参数后参数仍会被调整

问题 self.sgf_net.requires_grad_(False)起初设置 requires_grad(False) 优化器也没有添加sgfnet的模型参数。但是在pylightning框架中,每次推理完模型的参数都会被改变,经过仔细排查发现问题 # self.sgf_net.requires_grad_(False)for param in self.s…

大模型-微调与对齐-人类对齐背景与标准

1、目的 确保大模型的行为与人类价值观、人类真实意图和社会伦理相一致 2、大模型有害行为 无法正确遵循指令生成虚假信息产生有害、有误导性、有偏见的表达 3、评估标准 有用性诚实性无害性 4、更细化的对齐标准 行为对齐:要求AI能够做出符合人类期望的行为…

hive数据查询语法

思维导图 基本查询 基本语法 SELECT [ALL | DISTINCT] 字段名, 字段名, ... FROM 表名 [inner | left outer | right outer | full outer | left semi JOIN 表名 ON 关联条件 ] [WHERE 非聚合条件] [GROUP BY 分组字段名] [HAVING 聚合条件] [ORDER BY 排序字段名 asc | desc…

Docker lmdeploy 快速部署Qwen2.5模型openai接口

启动服务 我已经把模型下载到/data/xiedong/Qwen2.5-72B-Instruct-GPTQ-Int4 所以docker直接启动: docker run --runtime nvidia --gpus device=0 \-p 23333:23333 \--ipc=host -v /data/xiedong:/data/xiedong/ \openmmlab/lmdeploy:latest \lmdeploy serve api_server /d…

前端UniApp面试题及参考答案(100道题)

目录 UniApp 支持哪些平台? UniApp 在不同平台上的表现有何差异? 如何处理 UniApp 中的平台差异? UniApp 项目创建与目录结构 项目创建 目录结构 如何创建一个 UniApp 项目? UniApp 项目的基本目录结构是什么样的? 解释一下 UniApp 中的页面生命周期钩子函数有哪…

前端小知识:我居然没学会用 split 方法?!

小伙伴们,你们会用 JavaScript 的 split 方法吗?最近我才发现,原来我多年来一直没真正掌握它,结果在解题时被卡住了。所以今天,我决定好好整理一下这个方法的用法。 在讨论问题之前,先来看一下 split 的两种…

Java教学新动力:SpringBoot辅助平台

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理教学辅助平台的相关信息成为必然。开发合适…

【Rust Crate之Actix Web(一)】

Rust Crate之Actix Web 什么是Actix Web?Actix Web 入门代码宏展开,看看 #[get("/")] 做了什么Actix Web中的StateActix Web中的scopeActix Web中的extractorsPathQueryJSONURL-encoded form 总结 什么是Actix Web? Actix Web is a poweful &…

VTK知识学习(2)-环境搭建

1、c方案 1.1下载源码编译 官网获取源码。 利用Cmake进行项目构建。 里面要根据实际使用的情况配置相关的模块哟,这个得你自行研究下了。 CMAKEINSTALLPREFIX--这个选项的值表示VTK的安装路径,默认的路径是C:/Program Files/VTK。该选项的值可不作更…

Halcon 从XML中读取配置参数

1、XML示例 以下是一个XML配置文件的示例,该文件包含了AOI(自动光学检测)算法的环境参数和相机逻辑参数: <AOI><!--AOI算法参数 20241106--><Env><!--环境参数--><Param name="GPUName" value="NVIDIA GeForce RTX 405…

SQL--查询连续三天登录数据详解

问题&#xff1a; 现有用户登录记录表&#xff0c;请查询出用户连续三天登录的所有数据记录 id dt1 2024-04-25 1 2024-04-26 1 2024-04-27 1 2024-04-28 1 2024-04-30 1 2024-05-01 1 2024-05-02 1 2024-05-04 1 2024-05-05 2 20…

结构方程、生物群落、数据统计、绘图分析在生态领域的应用

R语言结构方程模型&#xff08;SEM&#xff09;在生态学领域中的实践应用 结构方程模型&#xff08;Sructural Equation Model&#xff09;是一种建立、估计和检验研究系统中多变量间因果关系的模型方法&#xff0c;它可以替代多元回归、因子分析、协方差分析等方法&#xff0…

vue使用canves把数字转成图片验证码

<canvas id"captchaCanvas" width"100" height"40"></canvas>function drawCaptcha(text) {const canvas document.getElementById(captchaCanvas);const ctx canvas.getContext(2d);// 设置背景颜色ctx.fillStyle #f0f0f0;ctx.f…