PyQt5-小案例(复数计算器)

PS:最近接的淘宝单子,有需要的可以自己拿

目录

功能实现条例

效果图展示

源码介绍

获取地址


功能实现条例

1.复数的加减乘除运算

2.复数的虚部和实部的分割提取

效果图展示

源码介绍

1.界面采用QTDesigner构建

2.利用PyUIC转成.py文件

3.因为点击⬅按钮才进行输入,所以给所有的输入框设置状态flag

4.而整个输入的字符串采用str_infor来表示,加减乘除则采用calcu_status来表示状态

加减乘除运算代码

    def done(self):
        global calcu_status
        if calcu_status == "+":
            a = self.lineEdit.text()
            b = self.lineEdit_3.text()
            res = float(a) + float(b)
            res = str(res)
            if res.split('.')[1] == "0":
                self.lineEdit_5.setText(res.split('.')[0])
            else:
                self.lineEdit_5.setText(res)
            c = self.lineEdit_2.text()
            d = self.lineEdit_4.text()
            res = float(c) + float(d)
            res = str(res)
            if res.split('.')[1] == "0":
                self.lineEdit_6.setText(res.split('.')[0])
            else:
                self.lineEdit_6.setText(res)

        elif calcu_status == "-":
            a = self.lineEdit.text()
            b = self.lineEdit_3.text()
            res = float(a) - float(b)
            res = str(res)
            if res.split('.')[1] == "0":
                self.lineEdit_5.setText(res.split('.')[0])
            else:
                self.lineEdit_5.setText(res)
            c = self.lineEdit_2.text()
            d = self.lineEdit_4.text()
            res = float(c) - float(d)
            res = str(res)
            if res.split('.')[1] == "0":
                self.lineEdit_6.setText(res.split('.')[0])
            else:
                self.lineEdit_6.setText(res)
        elif calcu_status == "×":
            a = float(self.lineEdit.text())
            b = float(self.lineEdit_2.text())
            c = float(self.lineEdit_3.text())
            d = float(self.lineEdit_4.text())
            res_1 = str(a*c - b*d)
            res_2 = str(b*c + a*d)
            if res_1.split('.')[1] == "0":
                self.lineEdit_5.setText(res_1.split('.')[0])
            else:
                self.lineEdit_5.setText(res_1)

            if res_2.split('.')[1] == "0":
                self.lineEdit_6.setText(res_2.split('.')[0])
            else:
                self.lineEdit_6.setText(res_2)
        elif calcu_status == '÷':
            a = float(self.lineEdit.text())
            b = float(self.lineEdit_2.text())
            c = float(self.lineEdit_3.text())
            d = float(self.lineEdit_4.text())
            res_1 = str((a * c + b * d) / (c ** 2 + d ** 2))
            res_2 = str((b * c - a * d) / (c ** 2 + d ** 2))
            if res_1.split('.')[1] == "0":
                self.lineEdit_5.setText(res_1.split('.')[0])
            else:
                self.lineEdit_5.setText(res_1)

            if res_2.split('.')[1] == "0":
                self.lineEdit_6.setText(res_2.split('.')[0])
            else:
                self.lineEdit_6.setText(res_2)
        else:
            pass

5.进行删除刚刚输入的字符则是用字符串[:-1]赋值的方法,清空则是赋值“”

6. 分割实部虚部这里不过多介绍,很多种情况,这里直接给出代码

    def get(self):
        infor = self.lineEdit_7.text()
        # 无i
        if infor.find('i') ==-1:
            if infor.find('-') == -1:
                self.lineEdit_8.setText(self.lineEdit_7.text())
                self.lineEdit_9.setText('0')
        else: #有i
            if infor.find('+') != -1:
                if infor.split('+')[0].find('i') != -1:
                    if infor.split('+')[0].split('i')[0] == "":
                        self.lineEdit_8.setText(infor.split('+')[1])
                        self.lineEdit_9.setText('1')
                    else:
                        if infor.split('+')[0][:-1].find('-') != -1 and len(infor.split('+')[0][:-1]) == 1:
                            self.lineEdit_8.setText(infor.split('+')[1])
                            self.lineEdit_9.setText('-1')
                        else:
                            self.lineEdit_8.setText(infor.split('+')[1])
                            self.lineEdit_9.setText(infor.split('+')[0][:-1])
                else:
                    if infor.split('+')[1].split('i')[0] == "":
                        self.lineEdit_8.setText(infor.split('+')[0])
                        self.lineEdit_9.setText('1')
                    else:
                        self.lineEdit_8.setText(infor.split('+')[0])
                        self.lineEdit_9.setText(infor.split('+')[1][:-1])
            if infor.find('-') != -1:
                if infor.count('-') == 1 and infor.find('-') != 0:
                    if infor.split('-')[0].find('i') != -1:
                        if infor.split('-')[0].split('i')[0] == "":
                            self.lineEdit_8.setText(infor.split('i')[1])
                            self.lineEdit_9.setText('1')
                        else:
                            self.lineEdit_8.setText(infor.split('i')[1])
                            self.lineEdit_9.setText(infor.split('-')[0][:-1])
                    else:
                        if infor.split('-')[1].split('i')[0] == "":
                            self.lineEdit_8.setText(infor.split('-')[0])
                            self.lineEdit_9.setText('-1')
                        else:
                            self.lineEdit_8.setText(infor.split('-')[0])
                            self.lineEdit_9.setText('-' + infor.split('-')[1][:-1])
                elif infor.count('-') == 2:
                    if infor[-1] == 'i':
                        x = self.search_n(infor,'-',2)
                        y = infor.find('i')
                        if infor[x:y] == "-":
                            self.lineEdit_8.setText(infor[0:x])
                            self.lineEdit_9.setText('-1')
                        else:
                            self.lineEdit_8.setText(infor[0:x])
                            self.lineEdit_9.setText(infor[x:y])
                    else:
                        self.lineEdit_8.setText(infor.split('i')[1])
                        if infor.split('i')[0] == "-":
                            self.lineEdit_9.setText('-1')
                        else:
                            self.lineEdit_9.setText(infor.split('i')[0])

获取地址

链接:百度网盘 请输入提取码

提取码:9yho

猜你喜欢

转载自blog.csdn.net/weixin_54627824/article/details/128279907