python + PyQt5 实现 简易计算器
忽然想起之前一直想写个简单的计算器,今天就写了一下,界面有些简陋,但是基本功能实现没有问题
以下是源码:
- # --*-- coding:utf-8 --*--
- import sys
- from PyQt5 import QtWidgets, QtCore
- from PyQt5.QtGui import QFont
- class Calculator(QtWidgets.QWidget):
- def __init__(self):
- super(Calculator, self).__init__()
- self.initUI()
- self.reset()
- self.display.setText("")
- def initUI(self):
- self.resize(600,650)
- self.setWindowTitle('简易计算器')
- Grid = QtWidgets.QGridLayout()
- self.display = QtWidgets.QLineEdit('')
- self.display.setFont(QFont("Times", 20))
- self.display.setReadOnly(True)
- self.display.setAlignment(QtCore.Qt.AlignRight)
- self.display.setMaxLength(20)
- Grid.addWidget(self.display, 0, 0, 1, 4)
- names = ['C', '(', 'Del', '+',
- '', '', '', '-',
- '', '', '', '*',
- '', '', '', '/',
- '', '.', ')', '=']
- 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(100, 60))
- button.setFont(QFont('Times', 30))
- button.clicked.connect(self.ButtonClicked)
- Grid.addWidget(button, pos[c][0] + 1, pos[c][1])
- c = c + 1
- self.setLayout(Grid)
- def ButtonClicked(self):
- text = self.sender().text()
- if text == "=":
- r = eval(self.number)
- result = str(r).decode('utf-8')
- self.display.setText(str(result)) #计算结果
- self.number = result
- elif text == "Del":
- self.number = self.number[:-1]
- self.display.setText(self.number)
- elif text == "C":
- self.reset()
- self.display.setText(self.number)
- else:
- if text in "+-*/":
- self.number = self.number + text
- else:
- self.number = self.number + text if self.number != "" else text
- self.display.setText(self.number)
- def reset(self):
- self.number = ""
- if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- ex = Calculator()
- ex.show()
- sys.exit(app.exec_())
python + PyQt5 实现 简易计算器的更多相关文章
- Python之实现一个简易计算器
自己动手写计算器 一.功能分析 用户输入一个类似这样 3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4) 这样的表达式,假设表达式里 ...
- PyQt5 简易计算器
剩下计算函数(self.calculator)未实现,有兴趣的朋友可以实现它 [知识点] 1.利用循环添加按钮部件,及给每个按钮设置信号/槽 2.给按钮设置固定大小:button.setFixedSi ...
- 【PyQt5-Qt Designer】简易的数字键盘输入+简易计算器
参考如下键盘格式写了一个键盘输入,目前还不能进行运算,后期完善... 效果如下: 完整代码: from PyQt5.QtWidgets import (QApplication,QWidget,QPu ...
- 自制c#简易计算器
这是一个课堂作业,我觉得作为一个简易的计算器不需要态度复杂的东西,可能还有一些bug,有空再慢慢加强. using System;using System.Collections.Generic;us ...
- 剖析简易计算器带你入门微信小程序开发
写在前面,但是重点在后面 这是教程,也不是教程. 可以先看Demo的操作动图,看看是个什么玩意儿,GitHub地址(https://github.com/dunizb/wxapp-sCalc) 自从微 ...
- PHP学习笔记02——简易计算器
<!DOCTYPE html> <html> <head> <title>PHP简易计算器</title> </head> &l ...
- JavaScript之简易计算器
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...
- 菜鸟学习Struts——简易计算器
这是学习Struts的一个简单的例子文件结构如下: 1.配置Struts环境 2.新建input.jsp,success.jsp,error.jsp input.jsp代码如下: <%@ pag ...
- 教学项目之-通过Python实现简单的计算器
教学项目之-通过Python实现简单的计算器 计算器开发需求 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/ ...
随机推荐
- nginx处理cookie跨域
今天在部署公司项目的时候碰到一个问题 项目地址是xxx.xx.xx.122:7480 项目A后台请求地址为xxx.xx.xx.123:8080/data-sso 开始nginx配置是 server { ...
- 论Java访问权限控制的重要性
人在什么面前最容易失去抵抗力? 美色,算是一个,比如说西施的贡献薄就是忍辱负重.以身报国.助越灭吴:金钱,算是另外一个,我们古人常说“钱乃身外之物,生不带来死不带去”,但我们又都知道“有钱能使鬼推磨” ...
- github学习:如何从本地把项目上传到github&&如何把github项目通过clone复制下来,详细教程
一.第一步---注册一个Github账号 首先要在GitHub上创建一个帐号,可以去官方网站注册一个账号. 前提:本地安装一个git 本人github:https://github.com/saucx ...
- Django知识点
一.Django pip3 install django C:\Python35\Scripts # 创建Django工程 django-adm ...
- 从锅炉工到AI专家(7)
说说计划 不知不觉写到了第七篇,理一下思路: 学会基本的概念,了解什么是什么不是,当前的位置在哪,要去哪.这是第一篇希望做到的.同时第一篇和第二篇的开始部分,非常谨慎的考虑了非IT专业的读者.希望借此 ...
- 批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务
windows(win10)批处理脚本 打开vm虚拟机的服务,并且开启无界面虚拟机 @echo off net start "vds" net start "VMAuth ...
- Shiro+easyUI+SpringMVC实现登录认证
最近在做一个小项目,其中认证这块使用shiro+SpringMVC+easyUI,因为easyUI在提交数据的时候使用的是ajax的异步提交,所以shiro在处理数据的时候需要重写FormAuth ...
- Perl线程队列:Thread::Queue
(Thread::Queue)队列数据结构(FIFO)是线程安全的,它保证了某些线程从一端写入数据,另一些线程从另一端读取数据.只要队列已经满了,写入操作就自动被阻塞直到有空间支持写操作,只要队列空了 ...
- NLP入门(六)pyltp的介绍与使用
pyltp的简介 语言技术平台(LTP)经过哈工大社会计算与信息检索研究中心 11 年的持续研发和推广, 是国内外最具影响力的中文处理基础平台.它提供的功能包括中文分词.词性标注.命名实体识别.依 ...
- GNOME图形界面的基本操作
成功登录进入CentOS系统之后,我们首先看到的桌面就是GNOME图形界面,下面来看一下相关的基本操作. 个性化设置 1,设置屏幕分辨率 进入菜单 2,更换桌面背景 进入下面菜单. 选择一张背景图片, ...