忽然想起之前一直想写个简单的计算器,今天就写了一下,界面有些简陋,但是基本功能实现没有问题

以下是源码:

  1. # --*-- coding:utf-8 --*--
  2. import sys
  3. from PyQt5 import QtWidgets, QtCore
  4. from PyQt5.QtGui import QFont
  5.  
  6. class Calculator(QtWidgets.QWidget):
  7.  
  8. def __init__(self):
  9. super(Calculator, self).__init__()
  10. self.initUI()
  11. self.reset()
  12. self.display.setText("")
  13.  
  14. def initUI(self):
  15. self.resize(600,650)
  16. self.setWindowTitle('简易计算器')
  17. Grid = QtWidgets.QGridLayout()
  18.  
  19. self.display = QtWidgets.QLineEdit('')
  20. self.display.setFont(QFont("Times", 20))
  21. self.display.setReadOnly(True)
  22. self.display.setAlignment(QtCore.Qt.AlignRight)
  23. self.display.setMaxLength(20)
  24. Grid.addWidget(self.display, 0, 0, 1, 4)
  25.  
  26. names = ['C', '(', 'Del', '+',
  27. '', '', '', '-',
  28. '', '', '', '*',
  29. '', '', '', '/',
  30. '', '.', ')', '=']
  31. pos = [(0, 0), (0, 1), (0, 2), (0, 3),
  32. (1, 0), (1, 1), (1, 2), (1, 3),
  33. (2, 0), (2, 1), (2, 2), (2, 3),
  34. (3, 0), (3, 1), (3, 2), (3, 3),
  35. (4, 0), (4, 1), (4, 2), (4, 3)]
  36. c = 0
  37. for name in names:
  38. button = QtWidgets.QPushButton(name)
  39. button.setFixedSize(QtCore.QSize(100, 60))
  40. button.setFont(QFont('Times', 30))
  41. button.clicked.connect(self.ButtonClicked)
  42. Grid.addWidget(button, pos[c][0] + 1, pos[c][1])
  43. c = c + 1
  44.  
  45. self.setLayout(Grid)
  46.  
  47. def ButtonClicked(self):
  48. text = self.sender().text()
  49. if text == "=":
  50. r = eval(self.number)
  51. result = str(r).decode('utf-8')
  52. self.display.setText(str(result)) #计算结果
  53. self.number = result
  54.  
  55. elif text == "Del":
  56. self.number = self.number[:-1]
  57. self.display.setText(self.number)
  58.  
  59. elif text == "C":
  60. self.reset()
  61. self.display.setText(self.number)
  62.  
  63. else:
  64. if text in "+-*/":
  65. self.number = self.number + text
  66. else:
  67. self.number = self.number + text if self.number != "" else text
  68. self.display.setText(self.number)
  69.  
  70. def reset(self):
  71. self.number = ""
  72.  
  73. if __name__ == '__main__':
  74. app = QtWidgets.QApplication(sys.argv)
  75. ex = Calculator()
  76. ex.show()
  77. sys.exit(app.exec_())

python + PyQt5 实现 简易计算器的更多相关文章

  1. Python之实现一个简易计算器

    自己动手写计算器 一.功能分析 用户输入一个类似这样 3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4) 这样的表达式,假设表达式里 ...

  2. PyQt5 简易计算器

    剩下计算函数(self.calculator)未实现,有兴趣的朋友可以实现它 [知识点] 1.利用循环添加按钮部件,及给每个按钮设置信号/槽 2.给按钮设置固定大小:button.setFixedSi ...

  3. 【PyQt5-Qt Designer】简易的数字键盘输入+简易计算器

    参考如下键盘格式写了一个键盘输入,目前还不能进行运算,后期完善... 效果如下: 完整代码: from PyQt5.QtWidgets import (QApplication,QWidget,QPu ...

  4. 自制c#简易计算器

    这是一个课堂作业,我觉得作为一个简易的计算器不需要态度复杂的东西,可能还有一些bug,有空再慢慢加强. using System;using System.Collections.Generic;us ...

  5. 剖析简易计算器带你入门微信小程序开发

    写在前面,但是重点在后面 这是教程,也不是教程. 可以先看Demo的操作动图,看看是个什么玩意儿,GitHub地址(https://github.com/dunizb/wxapp-sCalc) 自从微 ...

  6. PHP学习笔记02——简易计算器

    <!DOCTYPE html> <html> <head> <title>PHP简易计算器</title> </head> &l ...

  7. JavaScript之简易计算器

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...

  8. 菜鸟学习Struts——简易计算器

    这是学习Struts的一个简单的例子文件结构如下: 1.配置Struts环境 2.新建input.jsp,success.jsp,error.jsp input.jsp代码如下: <%@ pag ...

  9. 教学项目之-通过Python实现简单的计算器

    教学项目之-通过Python实现简单的计算器   计算器开发需求 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/ ...

随机推荐

  1. nginx处理cookie跨域

    今天在部署公司项目的时候碰到一个问题 项目地址是xxx.xx.xx.122:7480 项目A后台请求地址为xxx.xx.xx.123:8080/data-sso 开始nginx配置是 server { ...

  2. 论Java访问权限控制的重要性

    人在什么面前最容易失去抵抗力? 美色,算是一个,比如说西施的贡献薄就是忍辱负重.以身报国.助越灭吴:金钱,算是另外一个,我们古人常说“钱乃身外之物,生不带来死不带去”,但我们又都知道“有钱能使鬼推磨” ...

  3. github学习:如何从本地把项目上传到github&&如何把github项目通过clone复制下来,详细教程

    一.第一步---注册一个Github账号 首先要在GitHub上创建一个帐号,可以去官方网站注册一个账号. 前提:本地安装一个git 本人github:https://github.com/saucx ...

  4. Django知识点

    一.Django        pip3 install django            C:\Python35\Scripts        # 创建Django工程    django-adm ...

  5. 从锅炉工到AI专家(7)

    说说计划 不知不觉写到了第七篇,理一下思路: 学会基本的概念,了解什么是什么不是,当前的位置在哪,要去哪.这是第一篇希望做到的.同时第一篇和第二篇的开始部分,非常谨慎的考虑了非IT专业的读者.希望借此 ...

  6. 批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务

    windows(win10)批处理脚本 打开vm虚拟机的服务,并且开启无界面虚拟机 @echo off net start "vds" net start "VMAuth ...

  7. Shiro+easyUI+SpringMVC实现登录认证

      最近在做一个小项目,其中认证这块使用shiro+SpringMVC+easyUI,因为easyUI在提交数据的时候使用的是ajax的异步提交,所以shiro在处理数据的时候需要重写FormAuth ...

  8. Perl线程队列:Thread::Queue

    (Thread::Queue)队列数据结构(FIFO)是线程安全的,它保证了某些线程从一端写入数据,另一些线程从另一端读取数据.只要队列已经满了,写入操作就自动被阻塞直到有空间支持写操作,只要队列空了 ...

  9. NLP入门(六)pyltp的介绍与使用

    pyltp的简介   语言技术平台(LTP)经过哈工大社会计算与信息检索研究中心 11 年的持续研发和推广, 是国内外最具影响力的中文处理基础平台.它提供的功能包括中文分词.词性标注.命名实体识别.依 ...

  10. GNOME图形界面的基本操作

    成功登录进入CentOS系统之后,我们首先看到的桌面就是GNOME图形界面,下面来看一下相关的基本操作. 个性化设置 1,设置屏幕分辨率 进入菜单 2,更换桌面背景 进入下面菜单. 选择一张背景图片, ...