Python 3.8 + PyCharm + PyQt5(三)-输入计算

Python 3.8 + PyCharm + PyQt5(三)-输入计算


所有后面讲解和记录的源码都会在 GuiHub中,可以自行下载

输入做加法

今天我们做一个简单的输入做加法的一个界面,涉及内容:
1、输入框
2、按钮事件
3、框内容获取和修改

UI布局

首先按照第二讲的说法,拖出一个和我一样的界面,功能实现就是A+B=C,左边两个输入框和输出框是Line Edit控件,然后最右边是一个按键Push Button按钮。
在这里插入图片描述
在属性界面找到三个框和按钮的objectName,分别命名A\B\C和Calculate
在这里插入图片描述

首先布局界面,然后按照上一讲的方法,进行显示,但是你发现你按计算按钮没有任何反应,这就要讲到下一个知识点,按钮点击事件。
在这里插入图片描述

按钮事件

实现A+B之前,我们先熟悉按钮点击事件,我们先再拖两个按钮,命名可以不管,显示文字改为显示和隐藏。如下图
在这里插入图片描述
然后找到菜单栏,找到添加槽和信号按钮。
在这里插入图片描述
然后鼠标点显示不要放,鼠标移动到B输入框会出现以下界面,简单理解就是显示按钮的什么信号会触发B输入框的什么动作。
在这里插入图片描述
这边左下角的勾打上,然后左边表示按钮显示出发了什么信号,我们选择点击信号,右边表示需要连接到什么动作,我们选择B框的show(),表示B框的显示。隐藏按钮同理,左边选择点击信号,右边选择hide(),表示隐藏。
在这里插入图片描述
然后保存,转码后,运行main.py,显示状态如下,效果是不是很明显。
在这里插入图片描述
那么我们现在回到刚刚的加法,计算按钮上,由于我们使用的是A+B算法,所以我们这个触发的动作需要自己写,因此在连接信号和槽框中,信号直接拉出来放在空白处,然后出来的槽动作那边点编辑
在这里插入图片描述
在出来的弹窗中点击+,添加槽函数,输入CalculateClick()。相当于一旦我点击计算按钮,我就会调用这个函数的意思。
在这里插入图片描述
然后对应的选择好之后,点击OK,保存UI,并用PyUIC进行转码
在这里插入图片描述
然后我们打开UI.py,我们会发现这个函数,意思就是我们按钮的点击链接到了Calculate函数。然后我们需要在主函数中重写这个函数。因为我们本身UI不带这个函数
在这里插入图片描述
这边我们需要对UI界面类进行重写,在主函数中添加以下代码:

class Mywindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(Mywindow, self).__init__()
        self.setupUi(self)

    def CalculateClcik(self):
        print("触发按钮。")

这边设计到几个点
1、类的继承
语法:class 派生类名(基类名)
那么我们的写法就是我们申请了一个Mywindow类,这个类继承了QtWidgets.QMainWindow,和Ui_MainWindow两个类的方法。
2、init函数
这是一个初始化函数,默认类实例化之后,就会自动调用init函数。有什么需要初始化的,就在这边完成。
3、def :
这是函数的什么指示。
4、self代表类的实例,而非类
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

程序中写的def CalculateClcik(self),表示我们重写CalculateClcik()函数,我们这边先输出打印“触发按钮”,实际效果是这样的:
在这里插入图片描述

按钮触发的函数也写好了,现在我们可以做我们的加法了。
做加法,我们首先得获取出A和B里面的内容,首先我们需要将字符串转为数字就是‘123’转为数字的123
这边用到int函数,这是比较方便的函数

int(self.A.text())

这句话什么意思呢,就是把A输入框里面的字符串转为整形。当然浮点型大家可以自行深入。
那么最后CalculateClcik函数就写成了这样:

    def CalculateClcik(self):
        # print("触发按钮。")
        self.C.setText(str(int(self.B.text()) + int(self.A.text())))

self表示实例本身,这边可以认为是界面自生,self.C表示界面中的C控件。其中setText是设置框内的内容。直接text()则是取里面的内容。
main.py代码:

# ! /usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from calculate import Ui_MainWindow
from PyQt5 import QtWidgets


class Mywindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(Mywindow, self).__init__()
        self.setupUi(self)

    def CalculateClcik(self):
        # print("触发按钮。")
        self.C.setText(str(int(self.B.text()) + int(self.A.text())))


if __name__ == '__main__':
  app = QtWidgets.QApplication(sys.argv)
  window = Mywindow()
  window.show()
  sys.exit(app.exec_())

效果:
在这里插入图片描述
当然这边还需要做一些保护,比如A框输入英文,那么程序运行是会崩溃的。这边就需要用到try函数,

    def CalculateClcik(self):
        try:
            self.C.setText(str(int(self.B.text()) + int(self.A.text())))
        except:
            print('请输入正确的整数')

这边的意思就是,如果try里面的代码运行不成功,就输出下面的打印
具体效果在这里插入图片描述
好了,以下是最终代码:

# ! /usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from calculate import Ui_MainWindow
from PyQt5 import QtWidgets


class Mywindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(Mywindow, self).__init__()
        self.setupUi(self)

    def CalculateClcik(self):
        try:
            self.C.setText(str(int(self.B.text()) + int(self.A.text())))
        except:
            print('请输入正确的整数')
            self.C.setText("")


if __name__ == '__main__':
  app = QtWidgets.QApplication(sys.argv)
  window = Mywindow()
  window.show()
  sys.exit(app.exec_())

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

誓言神月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值