使用PyQt构建简易计算器

使用PyQt构建简易计算器,第1张

使用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_())

           

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5670714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存