基于PyQt5的简易计算器

基于PyQt5的简易计算器之三

提示:基于PyQt5的简易计算器之一为环境搭建
基于PyQt5的简易计算器之一为环境搭建
基于PyQt5的简易计算器之二为Qt Designer使用
基于PyQt5的简易计算器之三为pycharm中实现按键的功能



import 部分

import sys 
# 导入系统,不用对其pip安装
from PyQt5.QtWidgets import QApplication,QWidget 
# 需要pip安装 PyQt5,已在基于PyQt5的简易计算器之一 环境的搭建中实现
from CalcuInterface import Ui_widget 
# 用户自己定义的,为ui转为py文件中的类,已在基于PyQt5的简易计算器之二 Qt Designer 中实现
from PyQt5.QtGui import  QIcon
# 用于加入软件独特的logo

一、创建类

class QmyWidget(QWidget):

# QmyWidget为创建的类名称,可以修改。

二、初始化定义

  def __init__(self,parent = None):  # ==注意init前后两个短线 _ _==
        # 从文件中加载UI定义
        # 从 UI 定义中动态 创建一个相应的窗口对象
        # 注意:里面的控件对象也成为窗口对象的属性了
        super().__init__(parent) # 调用父类构造函数,创建QtWidget窗口
        self.label_text = ''  # 定义一个变量,用于存放运算方程
        self.edit_text = ''   # 定义一个变量,用于按键输入的数值和运算符号
        self.num1 = ''        # 定义一个变量,用于存放输入的第一个数
        self.num2 = ''
        self.opt = ''		  # 定义一个变量,用于存放运算符
        self.result = ''	  # 定义一个变量,用于存放运算结果
        self.__ui = Ui_widget() # 创建UI对象
        self.__ui.setupUi(self)  # 创建UI界面
        self.__ui.lineEdit_op.setText('0') #编辑框lineEdit_op初始化,第二个框名称lineEdit_op
        self.__ui.display.setText('0') #结果显示框display初始化,第一个框名称display

三、数字0-9

以3 为例

    def on_three_pressed(self):  # three为按键3 的名称,如之二图中定义按键的名称
        self.label_text += '3'
		# 存放所有的输入,包括此时的输入:3
        if(self.opt == ''): # 若没有输入运算符,则给第一个数值后面
            self.num1 += '3'
            self.edit_text = self.num1 # 将数值1给变量edit_text,为后面在第二个框中显示做铺垫
        else:
            self.num2 += '3' # 若有运算符,则将3 给第二个数值后面
            self.edit_text = self.num2  #  同理
        self.__ui.lineEdit_op.setText(self.edit_text)  # 将输入的数值,显示在第二个框中
        self.__ui.display.setText(self.label_text)	   #将所有的输入,显示在第一个框中

其他数值类似。

四、点

点的功能和数字相似,因此写在这个地方

    def on_point_pressed(self):
        self.label_text += '.'
		# 存放所有的输入,包括此时的输入:3
        if(self.opt == ''): # 若没有输入运算符,则给第一个数值后面
            self.num1 += '.'
            self.edit_text = self.num1 # 将数值1给变量edit_text,为后面在第二个框中显示做铺垫
        else:
            self.num2 += '.'  # 若有运算符,则将3 给第二个数值后面
            self.edit_text = self.num2  #  同理
        self.__ui.lineEdit_op.setText(self.edit_text)  # 将输入的数值,显示在第二个框中
        self.__ui.display.setText(self.label_text)	   #将所有的输入,显示在第一个框中

四、加减乘除

以加为例

    def on_add_pressed(self):
        if (self.num1 == '' or self.opt !=''): # 若第一个数为空,或运算符为空,点击运算符失效
            pass
        else: # 否则
            self.label_text +='+' # 第一个显示屏的变量继续储存
            self.opt = '+'        # 运算符储存 +
            self.__ui.display.setText(self.label_text) # 第一个显示屏显示输入的“第一个数+”的内容,第二个框不做变化,还是第一个数值。

其他类似


五、 等于

    def on_equal_pressed(self):
        if (self.num2 == ''):  # 没有两个数时,等号无效
            pass
        else:
            if(self.opt == '+'):
                self.result = str(float(self.num1) + float(self.num2))
            elif (self.opt == '-'):
                self.result = str(float(self.num1) - float(self.num2)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值