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装饰器验证配置文件示例
Feb 24 Python
python通过pil为png图片填充上背景颜色的方法
Mar 17 Python
Python 模块EasyGui详细介绍
Feb 19 Python
如何安装多版本python python2和python3共存以及pip共存
Sep 18 Python
python2.7和NLTK安装详细教程
Sep 19 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
Python爬虫文件下载图文教程
Dec 23 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
Apr 11 Python
pycharm 如何取消连按两下shift出现的全局搜索
Jan 15 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 Python
python基础之文件处理知识总结
May 23 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
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
通过length属性判断jquery对象是否存在
2013/10/18 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
Vue.js 和 MVVM 的注意事项
2016/11/07 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
MUI实现上拉加载和下拉刷新效果
2017/06/30 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
js中如何完美的解析数据
2018/03/18 Javascript
node.js命令行教程图文详解
2019/05/27 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
原生js实现下拉选项卡
2019/11/27 Javascript
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
python查找指定具有相同内容文件的方法
2015/06/28 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
如何使用Python发送HTML格式的邮件
2020/02/11 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
求职信的最佳写作思路
2014/02/01 职场文书
办公室主任职责范本
2014/03/07 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android
MySQL定时备份数据库(全库备份)的实现
2021/09/25 MySQL
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫