Python PyQt5实现的简易计算器功能示例

作者:罗兵 时间:2022-01-22 12:03:19 

本文实例讲述了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.jb51.net/jisuanqi/equ_jisuanqi

科学计算器在线使用_高级计算器在线计算:
http://tools.jb51.net/jisuanqi/jsqkexue

在线计算器_标准计算器:
http://tools.jb51.net/jisuanqi/jsq

希望本文所述对大家Python程序设计有所帮助。

来源:http://www.cnblogs.com/hhh5460/p/4276214.html

标签:Python,PyQt5,计算器
0
投稿

猜你喜欢

  • 关于Python Socket编程的要点详解

    2021-11-25 17:44:11
  • Python plt 利用subplot 实现在一张画布同时画多张图

    2021-02-04 02:50:17
  • 解决pytorch 模型复制的一些问题

    2022-04-23 03:57:58
  • FSO无效的过程调用或参数问题

    2010-03-25 21:49:00
  • ini_set的用法介绍

    2023-11-15 07:31:56
  • python实现的简单RPG游戏流程实例

    2021-11-13 21:29:53
  • MySQL数据库中与 ALTER TABLE 有关的问题

    2009-01-14 11:57:00
  • 如何在MySQL查询结果集中得到记录行号

    2008-12-17 15:00:00
  • Javascript 闭包[翻译]

    2008-09-28 20:59:00
  • python掌握字符串只需这一篇就够了

    2023-01-09 03:39:10
  • 在ipython notebook中使用argparse方式

    2021-11-17 08:58:41
  • Python使用socket模块实现简单tcp通信

    2021-04-20 14:54:14
  • Python+selenium 获取一组元素属性值的实例

    2021-06-06 02:28:27
  • ASP使用wsImage组件给图片加水印代码

    2010-06-09 19:23:00
  • 基于pandas向csv添加新的行和列

    2021-11-29 02:28:56
  • Python的Flask框架中实现分页功能的教程

    2022-02-22 04:41:09
  • Python绘制计算机CPU占有率变化的折线图

    2021-08-11 05:50:37
  • 一文教你实现Python重试装饰器

    2022-04-23 08:01:07
  • Mysql导入TXT文件

    2012-01-05 19:01:10
  • Python OpenCV超详细讲解读取图像视频和网络摄像头

    2023-11-26 05:22:36
  • asp之家 网络编程 m.aspxhome.com