使用python写一个比Windows系统自带浏览器更好用的计算器

【介绍】

比Windows系统自带的还好用的计算器,感兴趣的可以试用一下。
1.支持括号优先级运算和平方、立方计算;
2.支持计算历史记录功能;
3.支持界面缩放和拖动;
4.支持钉在界面(界面最前置顶),再次点击取消置顶;
5.支持复杂的组合计算,支持鼠标点击和通过键盘方式输入算式;

【背景】

最近几天测试时,经常需要将web端页面的一些数据加起来汇总,Windows10自带的计算机用的真的是蛋疼,于是,自己写了一个计算器,解决使用过程中的一些体验问题。

【功能】

用python+pyqt5写了一个双行显示的计算器,计算器一个显示界面显示输入的复杂的算式,如带括号的加减乘除法,计算顺序需要遵循数学计算规则。

详细代码如下:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLineEdit, QLabel
from PyQt5.QtGui import QFont, QIconclass CalculatorApp(QWidget):def __init__(self):super().__init__()self.setWindowTitle('双行计算器')self.setWindowIcon(QIcon('icon.png'))  # 设置窗体图标# 设置输入框和结果显示框的样式self.input_line = QLineEdit()self.input_line.setReadOnly(True)self.input_line.setFont(QFont("Arial", 20))self.result_label = QLabel()self.result_label.setFont(QFont("Arial", 24))self.create_buttons()main_layout = QVBoxLayout()main_layout.addWidget(self.input_line)main_layout.addWidget(self.result_label)main_layout.addLayout(self.button_layout)self.setLayout(main_layout)def create_buttons(self):self.buttons = ['(', ')', '√', 'x^2','x^3', '←', 'C', '/','7', '8', '9', '*','4', '5', '6', '-','1', '2', '3', '+','0', '00', '.', '=']self.button_layout = QVBoxLayout()for i in range(6):row_layout = QHBoxLayout()for j in range(4):button = QPushButton(self.buttons[i * 4 + j])button.clicked.connect(self.on_button_click)button.setFont(QFont("Arial", 16))row_layout.addWidget(button)self.button_layout.addLayout(row_layout)def on_button_click(self):button = self.sender()clicked_text = button.text()current_text = self.input_line.text()if clicked_text == '=':try:result = eval(current_text)self.result_label.setText(str(result))except:self.result_label.setText('Error')elif clicked_text == 'C':self.input_line.clear()self.result_label.clear()elif clicked_text == '←':self.input_line.setText(str(self.input_line.text()[0:-1]))else:self.input_line.setText(current_text + clicked_text)if __name__ == '__main__':app = QApplication(sys.argv)calc_app = CalculatorApp()calc_app.show()sys.exit(app.exec_())

【运行效果】

经过验证,初步已经达到了预期。

【进阶版】

虽然功能上已经比自带的好一点,但是仍然不是很好用。

1、美化UI的颜色、边框和点击效果;

2、区分显示输入的算式内容,将删除、清除按钮、加减乘除和等号设置不同的颜色,便于区分。

3、增加计算历史记录显示功能,点击查看历史按钮,可以显示之前算式的内容和结果;

4、增加窗口置顶(钉在屏幕上),再次点击取消置顶;

5、调整美化字体;

6、窗口实现自适应;

【进阶版效果】

默认效果:

全屏效果:

【下载体验】

资源已上传,可免费下载体验,欢迎提供优化建议。

下载链接:

https://download.csdn.net/download/zh6526157/88780297

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

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

相关文章

Qt/QML编程之路:ListView实现横排图片列表的示例(40)

ListView列表,在QML中使用非常多,排列一个行,一个列或者一个表格,都会用到ListView。 ListView显示从内置QML类型(如ListModel和XmlListModel)创建的模型中的数据,或在C++中定义的从QAbstractItemModel或QAbstract ListModel继承的自定义模型类中的数据。 ListView有一…

未来零售策略解密:品牌全球化与新兴零售模式的交汇

随着全球数字化浪潮的不断推进,品牌出海已经成为零售业的重要发展方向。在这个多元化、全球化的市场中,线上线下融合和智能零售等新兴模式正迅速崛起,为品牌开拓更广阔的国际市场提供了丰富的可能性。本文Nox聚星将和大家探讨新兴零售模式在全…

Windows云服务器如何配置多用户登录?(Windows 2012)华为云官方文档与视频地址

Windows云服务器如何配置多用户登录?(Windows 2012)_弹性云服务器 ECS_故障排除_多用户登录_华为云 打开任务栏左下角的“服务器管理器”,在左侧列表中选中“本地服务器” 然后将右侧“远程桌面”功能的选项修改为“启用”&#x…

携程这几招,让千万用户真正实现低碳出游

近日,法大大与企业绿色发展研究院联合发布了《2023年签约减碳与低碳办公白皮书》(点击阅读及下载:法大大推出“签约减碳”年度账单,引领低碳办公新风潮),该白皮书基于《低碳办公评价》标准倡导的创新减碳技…

【必剪】鬼畜rap和鬼畜剧场的区别?

在【选择素材】中,每个素材下会有一个标签显示支持哪种的鬼畜形式,在点击一个两种格式的有【鬼畜剧场】和【鬼畜rap】这两中的主要区别在于 【鬼畜剧场】:对素材进行人工编排,创作自己原创的剧情作 【鬼畜rap】:对于素…

专业140+总分420+复旦大学957信号与系统考研经验复旦电子信息与通信

今年专业957信号与系统140,数二140,总分420,顺利上岸复旦大学,回顾这一年的复习,有起有落,也有过犹豫和放弃,好在都坚持下来了,希望大家考研复习要不忘初心,困难肯定是很…

win10安装postgresql 12.17

一、下载地址 Community DL Page 下载的12.17版本 二、安装 直接点“下一步、下一步”就可以,注意几点是在其中需要配置: 1.安装路径 2.data目录位置(默认是安装路径下的data文件夹) 3.端口(默认5432&#xff09…

多元跨界、戮力谐老!2024深圳国际户外运动展览会再创运动生活新方式

COSP Shenzhen 2024国际户外运动用品与时尚展 2024年3.14-16日 深圳会展中心(福田馆) COSP Shanghai 2024国际户外运动用品与时尚展 2024年9.05-07日 上海世博展览馆(浦东) 展会概述: 作为国内最具影响力的户外运动展会之一…

bt1120和bt656时序说明

时序说明 同步码说明 数据传输时序

Linux中并发程序设计(进程的创建和回收、exec函数使用)

进程的创建和回收 进程概念 概念 程序 存放在磁盘上的指令和数据的有序集合(文件) 静态的 进程 执行一个程序所分配的资源的总称 动态的进程和程序比较 注:进程是存在RAM中,程序是存放在ROM(flash)中的进程内容 BSS段&#xff…

【数据结构与算法】栈(Stack)之 浅谈数组和链表实现栈各自的优缺点

文章目录 1.栈介绍2. 哪种结构实现栈会更优?3.栈代码实现(C语言) 往期相关文章: 线性表之顺序表线性表之链表 1.栈介绍 栈是一种特殊的线性表,只允许在栈顶(Top)进行插入和删除元素操作&#…

win下安装es可视化工具——elasticsearch head(win_Elasticsearch)

一、head简介 Elasticsearch Head是集群管理、数据可视化、增删改查、查询语句可视化工具。 二、node.js的安装 ElasticSearch-head 依赖于node.js 下面先安装node.js 下面是node.js下载地址http://nodejs.cn/download/; 下载后,就是一个安装包&#xf…

session反序列化

据陈腾师傅所说: 1.漏洞产生原因:写入格式和读取格式不一样。 下面是三种常见的存储格式: 处理器 对应的存储格式 php键名竖线经过serialize()函数序列化处理的值php_serialize(php>5.54)经…

IDEA导出jar

1、选择导出方式 2、选择Main Class 3、构建jar

sqlmap使用教程(1)-指定目标

一、sqlmap简介 sqlmap是一个自动化SQL注入测试工具,它支持的数据库有MySQL、MSSQL、Oracle、PostgreSQL、Access、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB。sqlmap默认使用以下5种SQL注入技术: 基于布尔的盲注:根据返回页面判断条件…

03.Elasticsearch应用(三)

Elasticsearch应用(三) 1.核心概念介绍 注意:类型(Type) 6.0之前的版本有Type概念,type相当于关系型数据库的表,ES官方将在ES9版本中彻底删除Type。7里面Type为ES默认的类型_doc 2.Cat API 介…

python基础——锁

进程锁 (互斥锁) 进程锁的引入: 模拟抢票程序: from multiprocessing import Process import json import time def show_ticket(i):with open("./tickets.txt",mode"r",encoding"utf-8") as file:ticket json.load(f…

51-15 视频理解串讲—TimeSformer论文精读

今天读的论文题目是Is Space-Time Attention All You Need for Video Understanding? Facebook AI提出了一种称为TimeSformer视频理解的新架构,这个架构完全基于transformer,不使用卷积层。它通过分别对视频的时间和空间维度应用自注意力机制&#xff…

《动手学深度学习(PyTorch版)》笔记3.1

Chapter3 Linear Neural Networks 3.1 Linear Regression 3.1.1 Basic Concepts 我们通常使用 n n n来表示数据集中的样本数。对索引为 i i i的样本,其输入表示为 x ( i ) [ x 1 ( i ) , x 2 ( i ) , . . . , x n ( i ) ] ⊤ \mathbf{x}^{(i)} [x_1^{(i)}, x_2…

【机器学习】强化学习(七)-策略梯度算法-REINFORCE 训练月球着陆器代理(智能体)...

概 述 月球着陆器代理是一个模拟飞行器在月球表面着陆的环境,它有八个连续的状态变量,分别是水平坐标、垂直坐标、水平速度、垂直速度、角度、角速度、腿1触地、腿2触地。它有四个离散的动作,分别是什么都不做、发动左方向引擎、发动主引擎、…