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 相关文章推荐
pyside写ui界面入门示例
Jan 22 Python
Django静态资源URL STATIC_ROOT的配置方法
Nov 08 Python
Python标准库之多进程(multiprocessing包)介绍
Nov 25 Python
详解Python中的装饰器、闭包和functools的教程
Apr 02 Python
python实现bucket排序算法实例分析
May 04 Python
Python中工作日类库Busines Holiday的介绍与使用
Jul 06 Python
Python实现字典去除重复的方法示例
Jul 31 Python
Python编程之微信推送模板消息功能示例
Aug 21 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
Feb 18 Python
python保存网页图片到本地的方法
Jul 24 Python
python2.7 安装pip的方法步骤(管用)
May 05 Python
python爬虫beautifulsoup解析html方法
Dec 07 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 4.2书写安全的脚本
2006/10/09 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
2015/03/18 PHP
php实现递归抓取网页类实例
2015/04/03 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
jquery移除button的inline onclick事件(已测试及兼容浏览器)
2013/01/25 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
JS判断两个时间大小的示例代码
2014/01/28 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
ES6的新特性概览
2016/03/10 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
JavaScript中undefined和null的区别
2017/05/03 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
对python中GUI,Label和Button的实例详解
2019/06/27 Python
Python hashlib模块加密过程解析
2019/11/05 Python
django rest framework serializer返回时间自动格式化方法
2020/03/31 Python
python实现逻辑回归的示例
2020/10/09 Python
武汉高蓝德国际.net机试
2016/06/24 面试题
syb养殖创业计划书
2014/01/09 职场文书
大型活动策划方案
2014/01/12 职场文书
《蜗牛的奖杯》教后反思
2014/04/24 职场文书
委托收款证明
2015/06/23 职场文书
庆祝教师节主持词
2015/07/06 职场文书
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL
MySQL主从切换的超详细步骤
2022/06/28 MySQL