PyQt5制作一个科学计算器

首先先上结果图:

在这里插入图片描述

步骤一、安装Pyqt5

一行命令即可解决

pip install Pyqt5

步骤二、打开Pyqt5,设置相应界面

同样一行命令即可解决,在你安装Pyqt5环境下,直接输入

Pyqt5

举个例子

我这边是先打开prompot
在这里插入图片描述

先检查一个是否安装成功了pyqt5
在这里插入图片描述
在这里插入图片描述

然后就输入PyQt5就会自动打开PyQt5了
在这里插入图片描述
最后记得点击保存,命名为yourname.ui文件

步骤三、将ui文件转换成python文件

# 命令行输入这句代码
pyuic5 -o testUi.py yourname.ui

然后就会得到一个
testUi.py文件
在这里插入图片描述

步骤四、实例化类

新建一个python 文件
我这里新建一个first_demo.py文件,你取别的名字也行,将刚刚得到的test.ui文件和你新建的文件放在一个文件夹目录下,要不然导入会出现错误。
在这里插入图片描述

步骤五、输入代码、运行

在你新建的文件下,输入以下代码

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
from testUi import Ui_Form


class MyWindow(QWidget, Ui_Form):
    def __init__(self):
        super(MyWindow, self).__init__()
        self.setupUi(self)

    def btnClear_clicked(self):
        self.textEdit.clear()



    def btn1_clicked(self):
        self.textEdit.insertPlainText("1")


    def btn2_clicked(self):
        self.textEdit.insertPlainText("2")


    def btn3_clicked(self):
        self.textEdit.insertPlainText("3")


    def btn4_clicked(self):
        self.textEdit.insertPlainText("4")


    def btn5_clicked(self):
        self.textEdit.insertPlainText("5")


    def btn6_clicked(self):
        self.textEdit.insertPlainText("6")


    def btn7_clicked(self):
        self.textEdit.insertPlainText("7")


    def btn8_clicked(self):
        self.textEdit.insertPlainText("8")


    def btn9_clicked(self):
        self.textEdit.insertPlainText("9")


    def btn0_clicked(self):
        self.textEdit.insertPlainText("0")


    def btnPlus_clicked(self):
        self.textEdit.insertPlainText(" + ")


    def btnSub_clicked(self):
        self.textEdit.insertPlainText(" - ")


    def btnMul_clicked(self):
        self.textEdit.insertPlainText(" * ")


    def btnDiv_clicked(self):
        self.textEdit.insertPlainText(" / ")

    def btn_left_bracket_clicked(self):
        self.textEdit.insertPlainText(" ( ")


    def btn_right_bracket_clicked(self):
        self.textEdit.insertPlainText(" ) ")

    def btn_point_clicked(self):
        self.textEdit.insertPlainText(".")

    # 回车删除
    def Backspace_clicked(self):
        text = self.textEdit.toPlainText()
        length = len(text)
        text = text[0:length - 1]
        self.textEdit.setText(text)

    def end_oflined(self):
        self.textEdit.append("")

    def btnEqual_clicked(self):
        text = self.textEdit.toPlainText()

        lines = text.split("\n") # 读取所有行
        first_line = lines[0]  # 取第一行
        last_line = lines[-1]  # 取最后一行

        if not last_line :
            pass
        else:
            self.textEdit.insertPlainText(' = %.3f' % (eval(last_line)))



if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = MyWindow()

    win.pushButton_10.clicked.connect(win.btnClear_clicked)
    win.pushButton_7.clicked.connect(win.btn1_clicked)
    win.pushButton_8.clicked.connect(win.btn2_clicked)
    win.pushButton_9.clicked.connect(win.btn3_clicked)
    win.pushButton_4.clicked.connect(win.btn4_clicked)
    win.pushButton_5.clicked.connect(win.btn5_clicked)
    win.pushButton_6.clicked.connect(win.btn6_clicked)
    win.pushButton.clicked.connect(win.btn7_clicked)
    win.pushButton_2.clicked.connect(win.btn8_clicked)
    win.pushButton_3.clicked.connect(win.btn9_clicked)
    win.pushButton_11.clicked.connect(win.btn0_clicked)
    win.pushButton_13.clicked.connect(win.btnPlus_clicked)
    win.pushButton_14.clicked.connect(win.btnSub_clicked)
    win.pushButton_15.clicked.connect(win.btnMul_clicked)
    win.pushButton_16.clicked.connect(win.btnDiv_clicked)
    win.pushButton_12.clicked.connect(win.btnEqual_clicked)
    win.pushButton_17.clicked.connect(win.btn_left_bracket_clicked)
    win.pushButton_18.clicked.connect(win.btn_right_bracket_clicked)
    win.pushButton_19.clicked.connect(win.Backspace_clicked)
    win.pushButton_20.clicked.connect(win.btn_point_clicked)
    win.pushButton_21.clicked.connect(win.end_oflined)

    win.show()
    sys.exit(app.exec_())

最后点击运行即可
在这里插入图片描述

步骤六、项目打包

采用pyinstaller
pyinstaller -F -w 主函数名.py

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_49321128/article/details/125486145
今日推荐