问题描述:
用python + pyqt5 实现最简单的计算器
【 1: 只能进行 2 个数字的运算;2: 除法的第二位数不能是0 】
运行效果:

问题解决:
全部代码如下: 【 只需要进行打包即可, pyinstaller -F ./calculator.py 】

import sys
import re
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMainWindowclass Calculator_Window(QMainWindow):def setupUi(self, CalculatorWindow):CalculatorWindow.setObjectName("Calculator")CalculatorWindow.resize(500, 800)# 1: 先打一条显示器self.showEdit = QtWidgets.QLineEdit(CalculatorWindow)self.showEdit.setGeometry(QtCore.QRect(20, 40, 300, 60))# 2: 打一个 九宫格 ,并把相应的数字打 [ 先打一个主框,左九宫格,右+-*/, 然后用窗口添加该主框 ]self.containerWidget = QtWidgets.QWidget(CalculatorWindow)self.containerWidget.setObjectName("containerWidget")# 3: 1 - 9 数字的布局self.gridLayoutWidget = QtWidgets.QWidget(self.containerWidget)self.gridLayoutWidget.setGeometry(QtCore.QRect(20, 100, 300, 500))self.gridLayoutWidget.setObjectName("gridLayoutWidget")self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)self.gridLayout.setContentsMargins(0, 0, 0, 0) # 这里的 setContentsMargins 是左, 上, 右, 下self.gridLayout.setObjectName("gridLayout")self.btn_nmb_1 = QtWidgets.QPushButton(self.gridLayoutWidget)self.btn_nmb_1.setObjectName("btn_nmb_1")self.gridLayout.addWidget(self.btn_nmb_1, 0, 0, 1, 1)self.btn_nmb_2 = QtWidgets.QPushButton(self.gridLayoutWidget)self.btn_nmb_2.setObjectName("btn_nmb_2")self.gridLayout.addWidget(self.btn_nmb_2, 0, 1, 1, 1)self.btn_nmb_3 = QtWidgets.QPushButton(self.gridLayoutWidget)self.btn_nmb_3.setObjectName("btn_nmb_3")self.gridLayout.addWidget(self.btn_nmb_3, 0, 2, 1, 1)self.btn_nmb_4 = QtWidgets.QPushButton(self.gridLayoutWidget)self.btn_nmb_4.setObjectName("btn_nmb_4")self.gridLayout.addWidget(self.btn_nmb_4, 1, 0, 1, 1)self.btn_nmb_5 = QtWidgets.QPushButton(self.gridLayoutWidget)self.btn_nmb_5.setObjectName("btn_nmb_5")self.gridLayout.addWidget(self.btn_nmb_5, 1, 1, 1, 1)self.btn_nmb_6 = QtWidgets.QPushButton(self.gridLayoutWidget)self.btn_nmb_6.setObjectName("btn_nmb_6")self.gridLayout.addWidget(self.btn_nmb_6, 1, 2, 1, 1)self.btn_nmb_7 = QtWidgets.QPushButton(self.gridLayoutWidget)self.btn_nmb_7.setObjectName("btn_nmb_7")self.gridLayout.addWidget(self.btn_nmb_7, 2, 0, 1, 1)self.btn_nmb_8 = QtWidgets.QPushButton(self.gridLayoutWidget)self.btn_nmb_8.setObjectName("btn_nmb_8")self.gridLayout.addWidget(self.btn_nmb_8, 2, 1, 1, 1)self.btn_nmb_9 = QtWidgets.QPushButton(self.gridLayoutWidget)self.btn_nmb_9.setObjectName("btn_nmb_9")self.gridLayout.addWidget(self.btn_nmb_9, 2, 2, 1, 1)# + - * / 的垂直布局self.verticalLayoutWidget = QtWidgets.QWidget(self.containerWidget)self.verticalLayoutWidget.setGeometry(QtCore.QRect(340, 100, 70, 450))self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)self.verticalLayout.setContentsMargins(0, 0, 0, 0)self.verticalLayout.setObjectName("verticalLayout")self.btn_add = QtWidgets.QPushButton(self.verticalLayoutWidget)self.btn_add.setObjectName("btn_add")self.verticalLayout.addWidget(self.btn_add)self.btn_minus = QtWidgets.QPushButton(self.verticalLayoutWidget)self.btn_minus.setObjectName("btn_minus")self.verticalLayout.addWidget(self.btn_minus)self.btn_multiply = QtWidgets.QPushButton(self.verticalLayoutWidget)self.btn_multiply.setObjectName("btn_multiply")self.verticalLayout.addWidget(self.btn_multiply)self.btn_divide = QtWidgets.QPushButton(self.verticalLayoutWidget)self.btn_divide.setObjectName("btn_divide")self.verticalLayout.addWidget(self.btn_divide)self.btn_equal = QtWidgets.QPushButton(self.verticalLayoutWidget)self.btn_equal.setObjectName("btn_equal")self.verticalLayout.addWidget(self.btn_equal)CalculatorWindow.setCentralWidget(self.containerWidget) # 窗口添加该主框self.retranslateUi(CalculatorWindow) # 设置文字的的函数QtCore.QMetaObject.connectSlotsByName(CalculatorWindow) # 连接到指定的槽def retranslateUi(self, CalculatorWindow): _translate = QtCore.QCoreApplication.translateCalculatorWindow.setWindowTitle("计算器")self.showEdit.setText(_translate("CalculatorWindow", " 1 + 1 = 2"))  # 显示框# 1 - 9 按钮上的数字填充self.btn_nmb_1.setText(_translate("CalculatorWindow", "1"))self.btn_nmb_2.setText(_translate("CalculatorWindow", "2"))self.btn_nmb_3.setText(_translate("CalculatorWindow", "3"))self.btn_nmb_4.setText(_translate("CalculatorWindow", "4"))self.btn_nmb_5.setText(_translate("CalculatorWindow", "5"))self.btn_nmb_6.setText(_translate("CalculatorWindow", "6"))self.btn_nmb_7.setText(_translate("CalculatorWindow", "7"))self.btn_nmb_8.setText(_translate("CalculatorWindow", "8"))self.btn_nmb_9.setText(_translate("CalculatorWindow", "9"))# + - * / 的字符填充self.btn_add.setText(_translate("CalculatorWindow", "+"))self.btn_minus.setText(_translate("CalculatorWindow", "-"))self.btn_multiply.setText(_translate("CalculatorWindow", "*"))self.btn_divide.setText(_translate("CalculatorWindow", "/"))self.btn_equal.setText(_translate("CalculatorWindow", "="))# 给每个按钮的点击事件,统一处理self.btn_nmb_1.clicked.connect(self.btnClick)self.btn_nmb_2.clicked.connect(self.btnClick)self.btn_nmb_3.clicked.connect(self.btnClick)self.btn_nmb_4.clicked.connect(self.btnClick)self.btn_nmb_5.clicked.connect(self.btnClick)self.btn_nmb_6.clicked.connect(self.btnClick)self.btn_nmb_7.clicked.connect(self.btnClick)self.btn_nmb_8.clicked.connect(self.btnClick)self.btn_nmb_9.clicked.connect(self.btnClick)self.btn_add.clicked.connect(self.btnClick)self.btn_minus.clicked.connect(self.btnClick)self.btn_multiply.clicked.connect(self.btnClick)self.btn_divide.clicked.connect(self.btnClick)self.btn_equal.clicked.connect(self.btnClick)showString = ' 'nmb1 = 0 # 第一个数字nmbOprerator = ''nmb2 = 0 # 第二个数字nmb3 = 0 # 第三个数字def btnClick(self): # 统一处理按钮事件; 思路:数字 + 符号 字符串  = 这种格式sender = self.sender()senderText = sender.text()self.valueNmb(str(senderText))def valueNmb(self, senderText): # 对按下的按钮进行计算if (senderText == "+" or senderText == "-" or senderText == "*" or senderText == "/"):self.showString += " " + senderText + " "self.nmb1 = re.sub(r'\D', "", self.showString) # 取符号前面的数字为 nmb1self.nmbOprerator = senderTextself.showRes(str(self.nmb1) + " " + self.nmbOprerator + " ")elif (senderText == "="):self.showString += senderTextnmb2Index = self.showString.find(self.nmbOprerator) + 1 # +1 是因为把 + - * / 的符号去掉self.nmb2 = self.showString[nmb2Index: -1]self.nmb3 = self.switchCal(int(self.nmb1), str(self.nmbOprerator), int(self.nmb2))self.showRes(str(self.nmb1) + " " + self.nmbOprerator + " " + str(self.nmb2) + " = " + str(self.nmb3))else:self.showString += senderTextself.showRes(self.showString)def switchCal(self, nmb1, nmbOprerator, nmb2): # nmb3 进行计算nmb1 = int(nmb1)nmb2 = int(nmb2)if (nmbOprerator == "+"):return nmb1 + nmb2elif (nmbOprerator == "-"):return nmb1 - nmb2elif (nmbOprerator == "*"):return nmb1 * nmb2elif (nmbOprerator == "/"):return nmb1 / nmb2else:return 0def showRes(self, string): # 按钮改变显示的内容self.showEdit.setText(string)if __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)widget = QtWidgets.QMainWindow()window = Calculator_Window()window.setupUi(widget)widget.show()sys.exit(app.exec())

python+ pyqt5 实现最简单的计算器相关推荐

  1. python计算器教程,用Python程序制作一个简单的计算器

    用Python程序制作一个简单的计算器 在此示例中,您将学习创建一个简单的计算器,该计算器可以根据用户的输入进行加,减,乘或除. 要理解此示例,您应该了解以下Python编程主题: 通过函数创建简单计 ...

  2. pb实现简单计算器的思想_【python实用编程之简单矩阵计算器实现】GUI编程

    以下代码是作者闲暇时所作,对GUI界面编程有想法的朋友欢迎与作者交流 以下是一个简单的矩阵计算器实现的代码: #coding=gbk from tkinter import Tk,Menu,messa ...

  3. 项目一:使用python tkinter模块做简单的计算器

    小白第一次发博客,可能有很多问题,望指正! 讲的不是很详细,提供思路. 目录: 成果展示 代码说明 其他补充和参考资料 ------分割线-------- 1.成果展示 基本效果图:         ...

  4. 用python的正则表达式实现简单的计算器功能

    #!/usr/bin/env python # -*- coding:utf-8 -*- import sys import redef welcome_func():""&quo ...

  5. python矩阵计算器_【python实用编程之简单矩阵计算器实现】GUI编程

    #coding=gbk from tkinter import Tk,Menu,messagebox,Text,END from re import match,findall from numpy. ...

  6. 用python语言写一个简单的计算器

    假如我们有这样一个式子: 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2 ...

  7. python123程序设计题说句心里话_用c++写一个简单的计算器程序

    // 050305.cpp : 定义控制台应用程序的入口点. // // 050304.cpp : 定义控制台应用程序的入口点. // //四则运算 #include "stdafx.h&q ...

  8. 笨办法学 Python · 续 练习 36:简单的计算器

    练习 36:简单的计算器 原文:Exercise 36: Simple Calculator 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 这个挑战是创建一个简单的代数计算器, ...

  9. 使用python做一个简单的计算器

    今天教大家如何使用python撸一个简单的计算器小程序. 具体源码如下: import tkinter import math import tkinter.messageboxclass Calcu ...

最新文章

  1. centos6 mysql5.7.16_centos 6.5装mysql5.7
  2. 任意进制转换简单理解
  3. 作为Leader如何与团队成员更好地沟通?
  4. 2017年CISCN初赛
  5. ATO,MTO和ETO
  6. ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题
  7. springboot 创建地址_这可能是史上最易懂的 Spring Boot 入门教程
  8. 虚拟机(VMware Workstation)中,把连接网络的模式由“NAT模式”,改成“自动桥接模式”,网速大大的提升...
  9. (归并排序 快排 堆)
  10. Detected problems with app native libraries (please consult log for detail): lib.so: text relocation
  11. 【MySQL学习】3、MySQL视图
  12. word:如何从第三页插入目录
  13. 百练 4118 开餐馆
  14. Hyper-v安装及使用详细教程
  15. Can not squeeze dim[1], expected a dimension of 1
  16. 【龙印】把龙芯1c的pwm用作定时器并产生中断
  17. c语言和远光灯标志,汽车仪表盘图标大全,汽车仪表盘指示灯图解 - 汽车电子 - 电子发烧友网...
  18. Nero_BurningROM_11.0.23.100序列号
  19. js+canvas实现雨滴特效
  20. Yolov5s模型在全志V853平台上的部署方法和应用

热门文章

  1. 群智能算法-粒子群1
  2. ABB机器人线速度_ABB机器人控制柜380进线接线
  3. JVM 调优实战--jhat命令使用详解
  4. java for循环定义变量,在java语言里for循环里的变量如何声明在外面进行使用。
  5. 使用MATLAB快速计算Khatri-Rao积
  6. STC89C51——串行通信、串口介绍及配置
  7. webp格式转换成jpg,webp改jpg格式步骤
  8. APP测试相关理论,积累一点是一点(面试向)
  9. Java将图片转换成二进制,将二进制转换成图片
  10. 2020计算机考研专业课视频,2020计算机考研视频哪个好