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中转换角度为弧度的radians()方法
May 18 Python
python递归查询菜单并转换成json实例
Mar 27 Python
详谈python中冒号与逗号的区别
Apr 18 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
Jun 28 Python
OpenCV-Python 摄像头实时检测人脸代码实例
Apr 30 Python
关于阿里云oss获取sts凭证 app直传 python的实例
Aug 20 Python
Python 获取命令行参数内容及参数个数的实例
Dec 20 Python
python 实现查询Neo4j多节点的多层关系
Dec 23 Python
TensorFlow2.0:张量的合并与分割实例
Jan 19 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
Jan 20 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
Nov 28 Python
Python 中数组和数字相乘时的注意事项说明
May 10 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
PHP设计模式之观察者模式实例
2016/02/22 PHP
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
jQuery之尺寸调整组件的深入解析
2013/06/19 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
JavaScipt选取文档元素的方法(推荐)
2016/08/05 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
seajs中模块依赖的加载处理实例分析
2017/10/10 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
微信小程序 可搜索的地址选择实现详解
2019/08/28 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Python爬虫框架Scrapy基本用法入门教程
2018/07/26 Python
用Python实现数据的透视表的方法
2018/11/16 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
python 实现"神经衰弱"翻牌游戏
2020/11/09 Python
德国网上宠物店:Zoobio
2018/05/23 全球购物
介绍一下常见的木马种类
2014/11/15 面试题
电话销售经理岗位职责
2013/12/07 职场文书
护士自我评价
2014/02/01 职场文书
高级编程求职信模板
2014/02/16 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
2015年试用期工作总结
2014/12/12 职场文书
谢师宴答谢词
2015/01/05 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
查看nginx配置文件路径和资源文件路径的方法
2021/03/31 Servers
Golang 遍历二叉树
2022/04/19 Golang