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

效果如下:

完整代码:

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. PCL中使用FLANN库(2)

    接着上一篇的介绍继续 关于在使用readHeader函数读取点云数据头的类型的代码(Read a point cloud data header from a PCD file.) pcl::PCLP ...

  2. Java知多少(3) 就业方向

    Java的就业前景如何,看培训班就知道了,以Java培训为主的达内,已经上市. 根据IDC的统计,在所有软件开发类人才的需求中,对JAVA工程师的需求曾达到全部需求量的50%以上.而且,JAVA工程师 ...

  3. 极速打包【shell版】

    同步发表至 http://avenwu.github.io/2014/12/16/fast_apk_release/ 前言 前阵子无意间看到美团的技术文章,一口气读了几篇java.android相关的 ...

  4. Stanford Corenlp学习笔记——词性标注

    使用Stanford Corenlp对中文进行词性标注 语言为Scala,使用的jar的版本是3.6.0,而且是手动添加jar包,使用sbt添加其他版本的时候出现了各种各样的问题 添加的jar包有5个 ...

  5. [UI] 01 - CSS

    前言 一.认识 From: http://www.runoob.com/css/css-tutorial.html CSS 指层叠样式表 (Cascading Style Sheets) 解决内容与表 ...

  6. IntellIJ IDEA 启动 参数 配置

    系统环境: 型号名称: MacBook Pro型号标识符: MacBookPro11,4处理器名称: Intel Core i7处理器速度: 2.8 GHz处理器数目: 1核总数: 4L2 缓存(每个 ...

  7. vue中引入jquery

    npm install jquery -S 在webpack.base.conf.js里加入 plugins: [ new webpack.optimize.CommonsChunkPlugin('c ...

  8. 解决Android SDK Manager无法更新下载

    Android Studio2.2版本有一个bug,当在gradle文件编写代码时,程序会自动同步编译,这时整个程序都处于页面卡顿状态,要等待很久才能缓过来.最近实在忍受不了这种龟速,刚好发现有了新的 ...

  9. centos7 安装zookeeper3.4.8集群

    1.下载上传文件到centos中 2.解压文件夹 3.cd conf 文件下,cp  zoo_sample.cfg  zoo.cfg 4.vim zoo.cfg # The number of mil ...

  10. 如何利用office绘制施工进度计划横道图?

    在Excel中利用“悬浮的条形图”可以制作简单的横道图.Step1 启动Excel,仿照图1的格式,制作一份表格,并将有关工序名称.开(完)工时间和工程持续时间等数据填入表格中. A1单元格中请不要输 ...