本文实例讲述了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.jb51.net/jisuanqi/equ_jisuanqi
科学计算器在线使用_高级计算器在线计算:
http://tools.jb51.net/jisuanqi/jsqkexue
在线计算器_标准计算器:
http://tools.jb51.net/jisuanqi/jsq
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]
