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

使用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.mrgr.cn/news/68035.html

相关文章:

  • 热成像手机VS传统热成像仪:AORO A23为何更胜一筹?
  • CST汽车天线仿真(双向混合求解)
  • Springboot集成syslog+logstash收集日志到ES
  • uniapp分享功能
  • Flutter 主流常用第三方库、插件收集
  • 多级物联网(IoT)基础异构无线传感器网络(HWSNs)中的节点角色选择与轮换方案以提高能效
  • 【测试】【Debug】pytest运行后print没有输出
  • CPU Study-Multi-Port Cache
  • golang函数
  • 使用开源Embedding模型嵌入高维空间向量
  • Linux命令--paste
  • 【大模型系列】Grounded-VideoLLM(2024.10)
  • Java学习篇之JVM 调优
  • linux进程的状态之环境变量
  • 【贪心算法】No.1---贪心算法(1)
  • linux 进程调度学习笔记
  • 迭代解法:Jacobi、Gauss-Seidel、SOR
  • CPU Study - Branch Prediction
  • java单例模式
  • 使用LoRA 对千问70B模型进行微调
  • R7:糖尿病预测模型优化探索
  • MinGW-w64_10.0.0 + GCC12_x86_64-12.2.0-release-posix-seh-msvcrt-rt_v10-rev2.zip
  • 怎么快速区分金媒10.3和10.4旗舰版小程序,如果只看数字你就out了表面被忽悠教新手几招!
  • lua入门教程:随机数
  • MOE(Mixture of Experts,混合专家)
  • TESSY学习笔记—project view界面的架构