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的urllib模块显示下载进度示例
Jan 17 Python
python实现网页链接提取的方法分享
Feb 25 Python
Python兔子毒药问题实例分析
Mar 05 Python
在Django中创建URLconf相关的通用视图的方法
Jul 20 Python
Python实现对百度云的文件上传(实例讲解)
Oct 21 Python
Python数据类型之List列表实例详解
May 08 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
详解如何用TensorFlow训练和识别/分类自定义图片
Aug 05 Python
Python OpenCV实现鼠标画框效果
Aug 19 Python
python多线程实现同时执行两个while循环的操作
May 02 Python
如何清空python的变量
Jul 05 Python
python实现粒子群算法
Oct 15 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
smarty基础之拼接字符串的详解
2013/06/18 PHP
PHP连接SQLServer2005的方法
2015/01/27 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
JSON 教程 json入门学习笔记
2020/09/22 Javascript
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
2016/10/18 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
基于vue的fullpage.js单页滚动插件
2017/03/20 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
python实现播放音频和录音功能示例代码
2018/12/30 Python
pow在python中的含义及用法
2019/07/11 Python
解决Mac下使用python的坑
2019/08/13 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
2019/12/31 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
计算机专业自荐信范文
2014/05/28 职场文书
幼儿园感恩节活动总结
2015/03/24 职场文书
战友聚会致辞
2015/07/28 职场文书
任命书格式范文
2015/09/22 职场文书
Java设计模式中的命令模式
2022/04/28 Java/Android