栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用PyQt构建简易计算器

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用PyQt构建简易计算器

     Python课程即将告一段落,随之而来的就是课程考核了,这是我做的Python项目。同时在这也要感谢一下帮我解决项目相关问题,给予程序建议的老师和热心的博主们。第一次发帖,还望各位博主多多指教。

           开发环境:Visual Studio Code

我们将按以下步骤构建简易计算器

1、使用Qt Designer绘制简易计算器界面,如下图所示:

 2、更改对象名,如下图所示:

 3、设置txtDisplay右对齐并只读(只读很关键),如下图所示:

 4、设置信号和槽名,如下图所示:

  5、参考代码:

# 系统包
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
# 项目包
from Ui_MainWindow import Ui_MainWindow


class CMainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    number1 = 0
    number2 = 0
    type = 0      # 0表示无运算 1表示加法运算 2表示减法运算 #3表示乘法运算 #表示除法运算
    s = ""#定义一个全局变量 用来记录在 等于 之前的所有输入值,
    def __init__(self, parent = None):
        super(CMainWindow, self).__init__(parent)
        self.setupUi(self)
        # 主窗体设置
        self.setFixedSize(self.width(), self.height())
        self.show()

    def AddNumber(self, number):
                #print(self.s)
                self.txtDisplay.setText(self.s)

    def Push00(self):
        self.s = self.s+"00"
        self.AddNumber("00")

    def Push0(self):
        self.s = self.s +"0"
        self.AddNumber("0")

    def Push1(self):
        self.s = self.s +"1"
        self.AddNumber("1")

    def Push2(self):
        self.s = self.s +"2"
        self.AddNumber("2")

    def Push3(self):
        self.s = self.s +"3"
        self.AddNumber("3")

    def Push4(self):
        self.s = self.s +"4"
        self.AddNumber("4")

    def Push5(self):
        self.s = self.s +"5"
        self.AddNumber("5")

    def Push6(self):
        self.s = self.s +"6"
        self.AddNumber("6")

    def Push7(self):
        s = self.s +"7"
        self.AddNumber("7")

    def Push8(self):
        self.s = self.s +"8"
        self.AddNumber("8")

    def Push9(self):
        self.s = self.s +"9"
        self.AddNumber("9")

    def PushDot(self):
        self.s = self.s +"."
        self.AddNumber(".")

    def PushClr(self):
        self.s = ""
        self.txtDisplay.setText("0")
        self.number1 = 0
        self.number2 = 0
        self.type = 0

    def PushAdd(self):
        self.number1 = float(self.txtDisplay.text())
        self.type = 1
        self.s = self.s +"+"
        self.AddNumber("+")

    def PushSub(self):
        self.number1 = float(self.txtDisplay.text())
        self.type = 3
        self.s = self.s+"-"
        self.AddNumber("-")


    def PushMul(self):
        self.type = 2
        self.s = self.s+"*"
        self.AddNumber("*")
    def PushDiv(self):
        self.type = 2
        self.s = self.s + "/"
        self.AddNumber("/")

    def PushEqr(self):##重写计算函数
        result = 0
        if(self.s.__contains__("+")):
            S = self.s.split("+")
            for i in S:
                result = result + int(i)
            print(result)
            self.s = str(result)
            self.txtDisplay.setText(self.s)

        elif (self.s[1::].__contains__("-") ):##进行减法时 排除第一个数为负数的  防止其他运算误入减法
                    if (self.s[0].__eq__("-")):  # 减法的第一个数为负数
                        self.s = self.s[1::]
                        S = self.s.split("-")
                        result = int(S[0])*(-1)
                    else  :
                        S = self.s.split("-")
                        result = int(S[0])
                    for i in S[1::]:
                        result = result - int(i)
                        print(result)
                        self.s = str(result)
                        self.txtDisplay.setText(self.s)
        elif (self.s.__contains__("*")):
            S = self.s.split("*")
            result = int(S[0])
            for i in S[1::]:
                result = result * int(i)
            print(result)
            self.s = str(result)
            self.txtDisplay.setText(self.s)
        elif (self.s.__contains__("/")):# 仅仅整除  且不能除以0
            S = self.s.split("/")
            result = int(S[0])
            for i in S[1::]:
                result = result / int(i)
            print(result)
            self.s = str(int(result))
            self.txtDisplay.setText(self.s)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = CMainWindow()
    sys.exit(app.exec_())

           

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/665445.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号