参考如下键盘格式写了一个键盘输入,目前还不能进行运算,后期完善。。。

效果如下:

完整代码:

from PyQt5.QtWidgets import (QApplication,QWidget,QPushButton,QLCDNumber,QFormLayout,QLineEdit,QLabel,QGridLayout)
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt,QTimer,QDateTime,QDate,QTime,QSize
import sys class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self):
self.setGeometry(300,300,330,310)
self.setWindowTitle("数字键盘输入")
gridLayout = QGridLayout()
self.display = QLineEdit("")
self.display.setFixedSize(QSize(287,40))
self.display.setReadOnly(True)
self.display.setAlignment(Qt.AlignRight)
self.display.setFont(QFont("微软雅黑",14,QFont.Bold))
gridLayout.addWidget(self.display,0,0,1,4)
self.showNum = "" keys = ['Clear', '/', '*', '-',
'', '', '', '+',
'', '', '', '',
'', '', '', 'Enter',
'', '', '.', '']
position = [(0, 0), (0, 1), (0, 2), (0, 3),
(1, 0), (1, 1), (1, 2), (1, 3),
(2, 0), (2, 1), (2, 2), (2, 2),
(3, 0), (3, 1), (3, 2), (3, 3),
(4, 0), (4, 1), (4, 2), (4, 3), ]
for item in range(len(keys)):
btn = QPushButton(keys[item])
btn.setFixedSize(QSize(60, 40))
btn.setFont(QFont("微软雅黑",12,QFont.Bold))
btn.clicked.connect(self.btnClicked)
if keys[item] == "+":
gridLayout.addWidget(btn, 2, 3, 2, 1)
btn.setFixedSize(QSize(60, 90))
elif keys[item] == "Enter":
gridLayout.addWidget(btn, 4, 3, 2, 1)
btn.setFixedSize(QSize(60, 90))
elif keys[item] == "":
gridLayout.addWidget(btn, 5, 0, 1, 2)
btn.setFixedSize(QSize(142, 40))
elif keys[item] == "":
continue
else:
gridLayout.addWidget(btn, position[item][0]+1, position[item][1], 1, 1)
self.setLayout(gridLayout) def btnClicked(self):
sender = self.sender()
symbols = ["Clear","/","*","-","+","Enter"]
if sender.text() not in symbols:
self.showNum += sender.text()
self.display.setText(self.showNum)
elif sender.text() == "Clear":
self.display.setText("")
self.showNum = "" if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())

今天完善了一下,可以进行简单的+ - * / 运算了,效果如下:

完整代码:

 from PyQt5.QtWidgets import (QApplication,QWidget,QPushButton,QLCDNumber,QFormLayout,QLineEdit,QLabel,QGridLayout)
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt,QTimer,QDateTime,QDate,QTime,QSize
import sys class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self):
self.setGeometry(300,300,330,310)
self.setWindowTitle("简易计算器")
gridLayout = QGridLayout()
self.display = QLineEdit("")
self.display.setFixedSize(QSize(287,40))
self.display.setReadOnly(True)
self.display.setAlignment(Qt.AlignRight)
self.display.setFont(QFont("微软雅黑",14,QFont.Bold))
gridLayout.addWidget(self.display,0,0,1,4)
self.showNum = ""
self.firstNum = ""
self.lastNum = "" keys = ['Clear', '/', '*', '-',
'', '', '', '+',
'', '', '', '',
'', '', '', 'Enter',
'', '', '.', '']
position = [(0, 0), (0, 1), (0, 2), (0, 3),
(1, 0), (1, 1), (1, 2), (1, 3),
(2, 0), (2, 1), (2, 2), (2, 2),
(3, 0), (3, 1), (3, 2), (3, 3),
(4, 0), (4, 1), (4, 2), (4, 3), ]
for item in range(len(keys)):
btn = QPushButton(keys[item])
btn.setFixedSize(QSize(60, 40))
btn.setFont(QFont("微软雅黑",12,QFont.Bold))
btn.clicked.connect(self.btnClicked)
if keys[item] == "+":
gridLayout.addWidget(btn, 2, 3, 2, 1)
btn.setFixedSize(QSize(60, 90))
elif keys[item] == "Enter":
gridLayout.addWidget(btn, 4, 3, 2, 1)
btn.setFixedSize(QSize(60, 90))
elif keys[item] == "":
gridLayout.addWidget(btn, 5, 0, 1, 2)
btn.setFixedSize(QSize(142, 40))
elif keys[item] == "":
continue
else:
gridLayout.addWidget(btn, position[item][0]+1, position[item][1], 1, 1)
self.setLayout(gridLayout) def btnClicked(self):
sender = self.sender()
symbols = ["Clear","/","*","-","+","Enter"]
if sender.text() not in symbols:
self.showNum += sender.text()
self.display.setText(self.showNum)
elif sender.text() == "Clear":
self.display.setText("")
self.showNum = ""
elif sender.text() == "/":
self.firstNum = self.showNum
self.display.setText("")
self.showNum = ""
self.operator = "/"
elif sender.text() == "*":
self.firstNum = self.showNum
self.display.setText("")
self.showNum = ""
self.operator = "*"
elif sender.text() == "-":
self.firstNum = self.showNum
self.display.setText("")
self.showNum = ""
self.operator = "-"
elif sender.text() == "+":
self.firstNum = self.showNum
self.display.setText("")
self.showNum = ""
self.operator = "+" elif sender.text() == "Enter":
if self.operator == "/":
result = float(self.firstNum) / float(self.showNum)
result = float("%.2f"%result)
elif self.operator == "*":
result = float(self.firstNum) * float(self.showNum)
result = float("%.2f" % result)
elif self.operator == "+":
result = float(self.firstNum) + float(self.showNum)
result = float("%.2f" % result)
elif self.operator == "-":
result = float(self.firstNum) - float(self.showNum)
result = float("%.2f" % result)
self.display.setText(str(result))
self.showNum = "" if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())

简易计算器

【PyQt5-Qt Designer】简易的数字键盘输入+简易计算器的更多相关文章

  1. PyQt5 & Qt Designer使用小结

    开始在知乎写文章的原因,主要还是想整理平时的经验,方便自己以后查看,有机会的话大家也可以交流吧. 11月中旬由于项目需要,和另一名实习生负责使用Python开发一个数据分析的小软件. 虽然才开始接触Q ...

  2. PyCharm+PyQt5+Qt Designer配置

    配置前提 因为本机已经配置完毕了,本次使用的是虚拟机中的Win7系统,Win10系统操作步骤完全一样,无任何区别 PyCharm (这个不多说,官网下载安装,我是用的是2019.3版本) Python ...

  3. robotframework+appium,数字键盘输入问题,keycode,press keycode

    需要注意事项 appium自带的输入法应该是无法模拟控制键和基本键的,需要自行使用adb切换成搜狗或者android输入法,然后case完成之后记得切回appium输入法 appium模拟发送基本键命 ...

  4. PyQT5速成教程-4 Qt Designer实战[上]

    本文由 沈庆阳 所有,转载请与作者取得联系! 前言 在前面几节的学习中,我们对PyQt的基本使用.Qt Designer与Python编码的工作流程有了基本的学习.同时也掌握了Qt Designer中 ...

  5. 痞子衡嵌入式:超级好用的可视化PyQt GUI构建工具(Qt Designer)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是PyQt GUI构建工具Qt Designer. 痞子衡开博客至今已有好几年,一直以嵌入式开发相关主题的文章为主线,偶尔穿插一些其他技术 ...

  6. PyCharm+Qt Designer+PyUIC安装配置教程

    Qt Designer用于像VC++的MFC一样拖放.设计控件 PyUIC用于将Qt Designer生成的.ui文件转换成.py文件 Qt Designer和PyUIC都包含在PyQt5中,所以我们 ...

  7. Win10安装PyQt5与Qt Designer【转】

    https://blog.csdn.net/u011342224/article/details/78879633 1.直接在cmd中通过pip安装PyQt5 1 pip install pyqt5 ...

  8. Win10安装PyQt5与Qt Designer

    1.直接在cmd中通过pip安装PyQt5 1 pip install pyqt5 会自动下载PyQt5以及sip并安装,因为PyQt5不再提供Qt Designer等工具,所以需要再安装pyqt5- ...

  9. PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)详细教程

    摘要:Qt是常用的用户界面设计工具,而在Python中则使用PyQt这一工具包,它是Python编程语言和Qt库的成功融合.这篇博文通过图文详细介绍在PyCharm中如何完整优雅地安装配置PyQt5的 ...

随机推荐

  1. Ubuntu下CUDA8.0卸载

    Ubuntu下CUDA8.0卸载 https://www.jianshu.com/p/45e07114463a 由于目前CUDA9.0已经发布,很多朋友需要升级,而在升级前需要卸载CUDA8.0,方法 ...

  2. Wifi 开放系统认证和共享密钥身份认证

    记录开放系统认证和共享密钥认证的区别. 开放系统身份认证(open-systern authentication) 是802.11 要求必备的惟一方式. 由行动式工作站所发出的第一个帧被归类为auth ...

  3. 更换 homebrew 国内镜像源

    Brew 是OS X 上类似apt-get以及yum的一个软件包管理器,它依托于Github……………… 所以,虽然你侥幸下载到了 brew,但你肯定是无法更新 brew 的.原因你懂.不过虽然不能更 ...

  4. 8. Oracle通过rman进行克隆

    一. 安装规划 IP ROLE 192.168.1.235 克隆对象 192.168.1.221 克隆库 二. 备库创建相应的dump文件夹 # 在主库查询对应的dump目录 select name, ...

  5. VBA 高级筛选

    http://www.geren-jianli.com/n19719c34.aspx http://m.vccoo.com/v/4aej07_2 AdvancedFilter 函数介绍

  6. h5 打造全屏体验 element.requestFullscreen()

    google打造全屏体验 https://developers.google.cn/web/fundamentals/native-hardware/fullscreen/ 以前github上的 ht ...

  7. mysql中的schema 等价于database,相当于一个数据库

    MySQL 中 Schema 等价于 数据库. mysql> SELECT -> SCHEMA_NAME, -> DEFAULT_CHARACTER_SET_NAME, -> ...

  8. cuteftp9破解及安装、使用

    一.破解: 参考:https://jingyan.baidu.com/article/ca00d56c4e43b2e99febcf70.html 1. 首先下载cuteftp替换文件及cuteftp9 ...

  9. db2 reorg到底需要多少表空间(转)

    脱机reorg需要一定的空间,这个空间与目标所在的数据表空间.索引表空间.以及临时表空间均有关,各空间需求的大小与表和索引所占用的数据页和索引页相关. (1)对表执行reorg操作如:db2 reor ...

  10. 浅谈原生JavaScript实现remove()和recover()

    利用原生JavaScript实现: 1.remove(selectors)删除指定的一个或一组元素. 2.recover(selectors)恢复刚才删除的元素. function remove(se ...