本文实例讲述了Python PyQt5实现的简易计算器功能。分享给大家供大家参考,具体如下:

这里剩下计算函数(self.calculator)未实现,有兴趣的朋友可以实现它
【知识点】
1、利用循环添加按钮部件,及给每个按钮设置信号/槽
2、给按钮设置固定大小:button.setFixedSize(QtCore.QSize(60,30))
3、取事件的的发送者(此例为各个按钮)的文本: self.sender().text()
【效果图】
【源代码】
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./jisuanqi/equ_jisuanqi
科学计算器在线使用_高级计算器在线计算:
http://tools./jisuanqi/jsqkexue
在线计算器_标准计算器:
http://tools./jisuanqi/jsq
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
# Python
# PyQt5
# 计算器
# PyQt5实现简易计算器
# python3.5 + PyQt5 +Eric6 实现的一个计算器代码
# PyQt5实现简单的计算器
# Pyqt5实战小案例之界面与逻辑分离的小计算器程序
# 运算符
# 进阶
# 操作技巧
# 相关内容
# 两种
# 感兴趣
# 数据结构
# 给大家
# 有兴趣
# 可以实现
# 第三个
# 更多关于
# 则为
# 所述
# 几款
# 程序设计
# 源代码
# 使用技巧
# 清空
# 再为
相关文章:
头像制作网站在线制作软件,dw网页背景图像怎么设置?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
装修招标网站设计制作流程,装修招标流程?
如何在腾讯云服务器快速搭建个人网站?
Java解压缩zip - 解压缩多个文件或文件夹实例
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
如何用PHP快速搭建高效网站?分步指南
企业微网站怎么做,公司网站和公众号有什么区别?
如何在阿里云服务器自主搭建网站?
如何快速搭建二级域名独立网站?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
网站好制作吗知乎,网站开发好学吗?有什么技巧?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
如何在Golang中引入测试模块_Golang测试包导入与使用实践
如何通过wdcp面板快速创建网站?
建站之星如何优化SEO以实现高效排名?
如何快速打造个性化非模板自助建站?
如何在IIS中新建站点并配置端口与IP地址?
网站制作难吗安全吗,做一个网站需要多久时间?
如何快速上传自定义模板至建站之星?
网站制作企业,网站的banner和导航栏是指什么?
相册网站制作软件,图片上的网址怎么复制?
建站主机与服务器功能差异如何区分?
制作营销网站公司,淘特是干什么用的?
如何快速搭建高效WAP手机网站?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
C++用Dijkstra(迪杰斯特拉)算法求最短路径
建站OpenVZ教程与优化策略:配置指南与性能提升
如何用免费手机建站系统零基础打造专业网站?
创业网站制作流程,创业网站可靠吗?
制作国外网站的软件,国外有哪些比较优质的网站推荐?
如何快速搭建高效香港服务器网站?
深入理解Android中的xmlns:tools属性
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
如何用美橙互联一键搭建多站合一网站?
,有什么在线背英语单词效率比较高的网站?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
如何制作网站标识牌,动态网站如何制作(教程)?
如何选择高效可靠的多用户建站源码资源?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
网站制作需要会哪些技术,建立一个网站要花费多少?
PHP正则匹配日期和时间(时间戳转换)的实例代码
广州营销型建站服务商推荐:技术优势与SEO优化解析
建站之星代理商如何保障技术支持与售后服务?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
建站DNS解析失败?如何正确配置域名服务器?
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
*请认真填写需求信息,我们会在24小时内与您取得联系。