基于PyQt5的简易计算器之三
提示:基于PyQt5的简易计算器之一为环境搭建
基于PyQt5的简易计算器之一为环境搭建
基于PyQt5的简易计算器之二为Qt Designer使用
基于PyQt5的简易计算器之三为pycharm中实现按键的功能
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)