Python PyQt5实现的简易计算器功能示例


Posted in Python onAugust 23, 2017

本文实例讲述了Python PyQt5实现的简易计算器功能。分享给大家供大家参考,具体如下:

这里剩下计算函数(self.calculator)未实现,有兴趣的朋友可以实现它

【知识点】

1、利用循环添加按钮部件,及给每个按钮设置信号/槽
2、给按钮设置固定大小:button.setFixedSize(QtCore.QSize(60,30))
3、取事件的的发送者(此例为各个按钮)的文本: self.sender().text()

【效果图】

Python PyQt5实现的简易计算器功能示例

【源代码】

import sys
from PyQt5 import QtWidgets,QtCore,QtGui
class Example(QtWidgets.QWidget):
 def __init__(self):
  super(Example, self).__init__()
  self.initUI()
  self.reset()
 def initUI(self):
  self.setWindowTitle('简易计算器')
  grid = QtWidgets.QGridLayout()
  self.display = QtWidgets.QLineEdit('0')
  self.display.setFont(QtGui.QFont("Times", 20))
  self.display.setReadOnly(True)
  self.display.setAlignment(QtCore.Qt.AlignRight)
  self.display.setMaxLength(15)
  grid.addWidget(self.display,0,0,1,4)
  names = ['Clear', 'Back', '', 'Close', 
    '7', '8', '9', '/',
    '4', '5', '6', '*', 
    '1', '2', '3', '-',
    '0', '.', '=', '+']
  pos = [(0, 0), (0, 1), (0, 2), (0, 3),
    (1, 0), (1, 1), (1, 2), (1, 3),
    (2, 0), (2, 1), (2, 2), (2, 3),
    (3, 0), (3, 1), (3, 2), (3, 3 ),
    (4, 0), (4, 1), (4, 2), (4, 3)]
  c = 0
  for name in names:
   button = QtWidgets.QPushButton(name)
   button.setFixedSize(QtCore.QSize(60,30))
   button.clicked.connect(self.buttonClicked) # 给每个按钮设置信号/槽
   if c == 2:
    pass
    #grid.addWidget(QtWidgets.QLabel(''), 0, 2) #替换 第三个按钮 为 文本标签!
   else: 
    grid.addWidget(button, pos[c][0]+1, pos[c][1])
   c = c + 1
  self.setLayout(grid)
 def buttonClicked(self): 
  #sender = self.sender(); # 确定信号发送者
  #self.display.setText(sender.text())
  text = self.sender().text()
  if text in '+-*/':
   self.history.append(self.number) # 数字入栈
   self.history.append(text) # 运算符入栈
   self.operator = text # 设置当前运算符
   self.number = "" # 数字清空
   self.numberType = "int"
   return
  elif text == "=":
   self.calculate() # 计算
  elif text == "Back":
   pass
  elif text == "Clear":
   self.reset()
  elif text == "Close":
   self.close()
  elif text == ".":
   if self.numberType == "int":
    self.number += text
    self.numberType = "float"
  else:
   self.number = self.number + text if self.number != "0" else text
  self.display.setText(self.number)
 def calculate(self):
  pass
 def reset(self):
  self.number = "0"
  self.result = 0
  self.history = []
  self.operator = '' # +,-,*,/
  self.numberType = 'int' # int与float两种,如果输入了小数点则为实数
app = QtWidgets.QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())

PS:这里再为大家推荐几款计算工具供大家进一步参考借鉴:

在线一元函数(方程)求解计算工具:
http://tools.3water.com/jisuanqi/equ_jisuanqi

科学计算器在线使用_高级计算器在线计算:
http://tools.3water.com/jisuanqi/jsqkexue

在线计算器_标准计算器:
http://tools.3water.com/jisuanqi/jsq

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现xlsx文件分析详解
Jan 02 Python
利用pandas进行大文件计数处理的方法
Jul 25 Python
python机器学习之KNN分类算法
Aug 29 Python
python爬取内容存入Excel实例
Feb 20 Python
django中ORM模型常用的字段的使用方法
Mar 05 Python
python动态视频下载器的实现方法
Sep 16 Python
将labelme格式数据转化为标准的coco数据集格式方式
Feb 17 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
Mar 09 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
Apr 12 Python
关于python中导入文件到list的问题
Oct 31 Python
python批量创建变量并赋值操作
Jun 03 Python
关于pytest结合csv模块实现csv格式的数据驱动问题
May 30 Python
Python实现的密码强度检测器示例
Aug 23 #Python
python+selenium+autoit实现文件上传功能
Aug 23 #Python
Django与JS交互的示例代码
Aug 23 #Python
python paramiko模块学习分享
Aug 23 #Python
定制FileField中的上传文件名称实例
Aug 23 #Python
基于python元祖与字典与集合的粗浅认识
Aug 23 #Python
Python 多线程Threading初学教程
Aug 22 #Python
You might like
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
PHP网络操作函数汇总
2015/05/18 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
js中关于一个分号的崩溃示例
2013/11/11 Javascript
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
2016/01/13 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
2016/11/22 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
2018/05/03 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
Python合并多个Excel数据的方法
2018/07/16 Python
Python BS4库的安装与使用详解
2018/08/08 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
ORM Django 终端打印 SQL 语句实现解析
2019/08/09 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
python中Ansible模块的Playbook的具体使用
2020/05/28 Python
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
职专应届生求职信
2013/11/16 职场文书
乡镇网格化管理实施方案
2014/03/23 职场文书
师范生求职自荐信
2014/06/14 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
公司离职证明样本
2014/09/13 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书