分享使用pyqt5制作简单的计算器界面:附源码

1.界面设计

2.代码展示

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'test.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.
import sys

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow_0(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(867, 473)
        MainWindow.setStyleSheet("background-color: rgb(255, 43, 92);")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setEnabled(True)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setStyleSheet("font-size:60px;\n"
"background-color: rgb(80, 191, 208);")
        self.textBrowser.setObjectName("textBrowser")
        self.verticalLayout.addWidget(self.textBrowser)
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setHorizontalSpacing(7)
        self.gridLayout.setObjectName("gridLayout")
        self.pushButton_03 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_03.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_03.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_03.setObjectName("pushButton_03")
        self.gridLayout.addWidget(self.pushButton_03, 0, 3, 1, 1)
        self.pushButton_pr = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_pr.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_pr.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_pr.setObjectName("pushButton_pr")
        self.gridLayout.addWidget(self.pushButton_pr, 3, 0, 1, 1)
        self.pushButton_07 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_07.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_07.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_07.setObjectName("pushButton_07")
        self.gridLayout.addWidget(self.pushButton_07, 2, 0, 1, 1)
        self.pushButton_09 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_09.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_09.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_09.setObjectName("pushButton_09")
        self.gridLayout.addWidget(self.pushButton_09, 2, 3, 1, 1)
        self.pushButton_04 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_04.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_04.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_04.setObjectName("pushButton_04")
        self.gridLayout.addWidget(self.pushButton_04, 1, 0, 1, 1)
        self.pushButton_01 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_01.setEnabled(True)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.pushButton_01.sizePolicy().hasHeightForWidth())
        self.pushButton_01.setSizePolicy(sizePolicy)
        self.pushButton_01.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_01.setMaximumSize(QtCore.QSize(16777215, 16777215))
        self.pushButton_01.setBaseSize(QtCore.QSize(0, 0))
        self.pushButton_01.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_01.setObjectName("pushButton_01")
        self.gridLayout.addWidget(self.pushButton_01, 0, 0, 1, 1)
        self.pushButton_02 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_02.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_02.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_02.setObjectName("pushButton_02")
        self.gridLayout.addWidget(self.pushButton_02, 0, 2, 1, 1)
        self.pushButton_05 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_05.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_05.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_05.setObjectName("pushButton_05")
        self.gridLayout.addWidget(self.pushButton_05, 1, 2, 1, 1)
        self.pushButton_08 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_08.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_08.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_08.setObjectName("pushButton_08")
        self.gridLayout.addWidget(self.pushButton_08, 2, 2, 1, 1)
        self.pushButton_00 = QtWidgets.QPushButton(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.pushButton_00.sizePolicy().hasHeightForWidth())
        self.pushButton_00.setSizePolicy(sizePolicy)
        self.pushButton_00.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_00.setMouseTracking(False)
        self.pushButton_00.setTabletTracking(False)
        self.pushButton_00.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_00.setObjectName("pushButton_00")
        self.gridLayout.addWidget(self.pushButton_00, 3, 2, 1, 1)
        self.pushButton_06 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_06.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_06.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_06.setObjectName("pushButton_06")
        self.gridLayout.addWidget(self.pushButton_06, 1, 3, 1, 1)
        self.pushButton_point = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_point.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_point.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_point.setObjectName("pushButton_point")
        self.gridLayout.addWidget(self.pushButton_point, 3, 3, 1, 1)
        self.pushButton_sub = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_sub.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_sub.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_sub.setObjectName("pushButton_sub")
        self.gridLayout.addWidget(self.pushButton_sub, 1, 4, 1, 1)
        self.pushButton_add = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_add.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_add.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_add.setObjectName("pushButton_add")
        self.gridLayout.addWidget(self.pushButton_add, 0, 4, 1, 1)
        self.pushButton_mul = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_mul.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_mul.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_mul.setObjectName("pushButton_mul")
        self.gridLayout.addWidget(self.pushButton_mul, 2, 4, 1, 1)
        self.pushButton_div = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_div.setMinimumSize(QtCore.QSize(0, 80))
        self.pushButton_div.setStyleSheet("font-size:60px;\n"
"border-radius:12px;\n"
"background-color: rgb(185, 195, 255);")
        self.pushButton_div.setObjectName("pushButton_div")
        self.gridLayout.addWidget(self.pushButton_div, 3, 4, 1, 1)
        self.verticalLayout.addLayout(self.gridLayout)
        self.verticalLayout.setStretch(0, 1)
        self.verticalLayout.setStretch(1, 2)
        self.gridLayout_2.addLayout(self.verticalLayout, 0, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        self.pushButton_01.clicked.connect(lambda:self.view_0('1'))
        self.pushButton_02.clicked.connect(lambda:self.view_0('2'))
        self.pushButton_03.clicked.connect(lambda:self.view_0('3'))
        self.pushButton_04.clicked.connect(lambda:self.view_0('4'))
        self.pushButton_05.clicked.connect(lambda:self.view_0('5'))
        self.pushButton_06.clicked.connect(lambda:self.view_0('6'))
        self.pushButton_07.clicked.connect(lambda:self.view_0('7'))
        self.pushButton_08.clicked.connect(lambda:self.view_0('8'))
        self.pushButton_09.clicked.connect(lambda:self.view_0('9'))
        self.pushButton_00.clicked.connect(lambda:self.view_0('0'))
        self.pushButton_add.clicked.connect(lambda:self.view_0('+'))    # +
        self.pushButton_sub.clicked.connect(lambda:self.view_0("-"))    # -
        self.pushButton_mul.clicked.connect(lambda:self.view_0('*'))    # *
        self.pushButton_div.clicked.connect(lambda:self.view_0('/'))    # %
        self.pushButton_pr.clicked.connect(lambda:self.result())     # =
        self.pushButton_point.clicked.connect(lambda:self.view_0('.'))  # .

        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "简易计算器"))
        self.pushButton_03.setText(_translate("MainWindow", "3"))
        self.pushButton_pr.setText(_translate("MainWindow", "="))
        self.pushButton_07.setText(_translate("MainWindow", "7"))
        self.pushButton_09.setText(_translate("MainWindow", "9"))
        self.pushButton_04.setText(_translate("MainWindow", "4"))
        self.pushButton_01.setText(_translate("MainWindow", "1"))
        self.pushButton_02.setText(_translate("MainWindow", "2"))
        self.pushButton_05.setText(_translate("MainWindow", "5"))
        self.pushButton_08.setText(_translate("MainWindow", "8"))
        self.pushButton_00.setText(_translate("MainWindow", "0"))
        self.pushButton_06.setText(_translate("MainWindow", "6"))
        self.pushButton_point.setText(_translate("MainWindow", "."))
        self.pushButton_sub.setText(_translate("MainWindow", "-"))
        self.pushButton_add.setText(_translate("MainWindow", "+"))
        self.pushButton_mul.setText(_translate("MainWindow", "×"))
        self.pushButton_div.setText(_translate("MainWindow", "÷"))

        self.nn_0 = ''
        self.n00 = 0

    def view_0(self, nn_0):
        self.nn_0 += nn_0
        if self.n00 ==1:
            self.nn_0 = ''
            self.n00 = 0
        self.textBrowser.setText(self.nn_0)

    def result(self):
        re_nu = self.textBrowser.toPlainText()      # 获取文本内数据
        # print(float(eval(re_nu)))
        re_nu = float(eval(re_nu))
        # print(type(re_nu))
        self.n00 = 1
        self.textBrowser.setText(str(re_nu))


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow_0()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

3.效果展示

 4.代码问题总结

        4.1可根据需要添加其他元素。

        4.2计算器运行一个公式结束后,因未设计清除按钮,需要点一下数字(0-9)随机一个,用以清空计算框的结果,然后就可以继续计算下一个公式。

        4.3代码只是最简单的计算器,更多功能,请各位自行开发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值