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自动化测试之连接几组测试包实例
Sep 28 Python
python实现的简单FTP上传下载文件实例
Jun 30 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
Jun 20 Python
python使用xpath中遇到:到底是什么?
Jan 04 Python
tensorflow TFRecords文件的生成和读取的方法
Feb 06 Python
PyQt5每天必学之带有标签的复选框
Apr 19 Python
python实现跨excel的工作表sheet之间的复制方法
May 03 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
pytorch实现onehot编码转为普通label标签
Jan 02 Python
浅谈pytorch中的BN层的注意事项
Jun 23 Python
python 如何将office文件转换为PDF
Sep 22 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使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
js实现随机数小游戏
2019/06/28 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
python编写爬虫小程序
2015/05/14 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
python实现感知器算法(批处理)
2019/01/18 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
使用Pyhton集合set()实现成果查漏的例子
2019/11/24 Python
详解Python 循环嵌套
2020/07/09 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
2020/09/05 Python
python 元组和列表的区别
2020/12/30 Python
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
Nike法国官方网站:Nike.com FR
2018/07/22 全球购物
最新自我评价范文
2013/11/16 职场文书
毕业生求职的求职信
2013/12/05 职场文书
旷课检讨书3000字
2014/02/04 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
2015年教师工作总结范文
2015/03/31 职场文书
检讨书模板大全
2015/05/07 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
Python装饰器详细介绍
2022/03/25 Python
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL