【python】PyQt5中QAbstractButton基类的特性详细分析与实战应用

news2024/9/24 12:16:58

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,小程序开发,云原生K8S,人工智能,js逆向,App逆向,网络系统安全,数据分析,PyQt5和tkinter桌面开发,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:PyQt5桌面应用开发,零基础到进阶应用实战
景天的主页:景天科技苑

在这里插入图片描述

文章目录

  • QAbstractButton
    • 1.介绍
    • 2. QAbstractButton的子类
    • 3.QAbstractButton案例
    • 4.QAbstractButton文本设置
    • 5.QAbstractButton图标设置
    • 6.QAbstractButton快捷键设置
    • 7.QAbstractButton自动重复
    • 8.QAbstractButton按钮状态
    • 9.QAbstractButton按钮排他性
    • 10.QAbstractButton通过代码模拟用户点击
    • 11.QAbstractButton设置按钮有效点击区域
    • 12.QAbstractButton自带的信号

QAbstractButton

1.介绍

QAbstractButton 是一个抽象类,无法直接实例化,但它提供了很多在 PyQt 中使用按钮时常用的功能和特性。开发人员可以通过继承 QAbstractButton 类并实现自定义行为来创建自己的按钮类。
QAbstractButton是Qt中所有按钮类的基类,它提供了一些基本的按钮功能和属性。它是一个抽象类,不能直接实例化,而是通过继承它来创建具体的按钮类。
通过继承QAbstractButton类,我们可以创建不同类型的按钮,如QPushButton、QCheckBox、QRadioButton等。这些具体的按钮类会继承并扩展QAbstractButton类的功能,以实现不同类型按钮的特定功能。

在 PyQt 中,可以通过子类化 QAbstractButton 的抽象类来创建自定义的按钮类。通过子类化,可以根据需要扩展和重写 QAbstractButton 的功能,并实现自定义的按钮行为。
当我们实例化一个QAbstractButton对象时,就会发生错误,原因就是C++的抽象类无法直接被实例化,而应该去子类化一个类,也就是写一个继承自QAbstractButton的类才可以。
如下代码:

btu = QAbstractButton(window)
btu.setText('按钮')

运行结果:
在这里插入图片描述

并且,继承QAbstractButton抽象类后,一定得重写paintEvent方法,不然也报错
要实现抽象类,必须要实现抽象类中的所有抽象方法
在这里插入图片描述

2. QAbstractButton的子类

通过递归,查看QAbstractButton类的子类
在这里插入图片描述

各子类介绍
在这里插入图片描述

3.QAbstractButton案例

# 0. 导入需要的包和模块
from PyQt5.Qt import *
import sys


# 1. 创建一个应用程序对象
app = QApplication(sys.argv)

# 2. 控件的操作
# 2.1 创建控件
window = QWidget()
# 2.2 设置控件
window.setWindowTitle("QAbstractButton")
window.resize(500, 500)

#不能直接通过QAbstractButton抽象类来实例化对象,需要继承QAbstractButton,用子类来实例化对象
class Btn(QAbstractButton):
    #实现抽象类,必须要实现抽象类中的所有抽象方法
    #此时必须重写QAbstractButton抽象类中的paintEvent抽象方法
    #绘制事件,绘制图像时触发
    def paintEvent(self, evt):
        # print("绘制按钮")
        # 绘制按钮上要展示的一个界面内容

        # 1 创建一个画家, 画在什么地方,画在按钮上
        painter = QPainter(self)

        # 2 给画家一支笔
        # 2.1 创建一支笔,指定画的颜色,RGB,第二个参数是笔的粗细,粗细在画图的时候起作用,文字粗细不起作用
        pen = QPen(QColor(111, 200, 20), 5)
        # 2.2 设置这个笔
        painter.setPen(pen)

        # 3 画家画,将文本信息添加上,画的位置,指定坐标位置
        #设置字体大小和字体类型
        painter.setFont(QFont('楷体', 13))
        # drawText(self, x: int, y: int, width: int, height: int, flags: int, text: Optional[str]) -> Optional[QRect]
        painter.drawText(16, 62, self.text())

        # 4 画椭圆 drawEllipse(self, x: int, y: int, w: int, h: int)
        painter.drawEllipse(10, 10, 100, 100)


btn = Btn(window)
btn.setText("景天科技苑")
btn.resize(200, 200)

btn.move(100,100)

#点击事件
btn.clicked.connect(lambda : print("点击了这个按钮"))




# 2.3 展示控件
window.show()
# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())

运行
在这里插入图片描述

点击按钮,点击事件也能触发
在这里插入图片描述

一般我们创建按钮,不必使用这个抽象类,除非它给定的子类里面无法满足我们的需求,才需要我们用这个抽象类定制特定的需求

4.QAbstractButton文本设置

主要作用:用户点击按钮前, 给用户的文本提示
比如说 确定 取消…等

API介绍
在这里插入图片描述

实战案例:
创建一个按钮, 初始文本为1
每点击一次, 则让文本数字增加1

代码展示:

# 0. 导入需要的包和模块
from PyQt5.Qt import *  # 主要包含了我们常用的一些类, 汇总到了一块
import sys


# 1. 创建一个应用程序对象
app = QApplication(sys.argv)


# 2. 控件的操作
# 2.1 创建控件
window = QWidget()

class Btn(QPushButton):

    def mousePressEvent(self, QMouseEvent):
        num = int(self.text())
        num += 1
        self.setText(str(num))


# 2.2 设置控件
#设置窗口标题,默认标题是python,只有顶级控件才可以设置标题栏的标题
window.setWindowTitle("点击按钮数字加1")
#设置窗口大小,注意,设置的空间尺寸大小,不包含上面的标题栏
window.resize(500, 500)

btn = Btn(window)
btn.setText("1")
btn.move(100,100)


# 2.3 展示控件
window.show()



# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())

运行
在这里插入图片描述

点击按钮,每点一次,按钮里面的数字加1
在这里插入图片描述

5.QAbstractButton图标设置

我们可以给按钮自定义图标
相关API介绍
在这里插入图片描述

代码展示

# 0. 导入需要的包和模块
from PyQt5.Qt import *  # 主要包含了我们常用的一些类, 汇总到了一块
import sys


# 1. 创建一个应用程序对象
app = QApplication(sys.argv)


# 2. 控件的操作
# 2.1 创建控件
window = QWidget()


# 2.2 设置控件
#设置窗口标题,默认标题是python,只有顶级控件才可以设置标题栏的标题
window.setWindowTitle("按钮图标操作")
#设置窗口大小,注意,设置的空间尺寸大小,不包含上面的标题栏
window.resize(500, 500)

btn = QPushButton(window)
btn.setText("按钮")
btn.move(100,100)

#创建图标对象
icon = QIcon("../imgs/python-gui.png")
#设置图标
btn.setIcon(icon)  #图标居于按钮的文本左边

#设置图标大小,QSize(w: int, h: int)
#随着图标的变大,按钮的尺寸也会变大
size = QSize(50, 50)
btn.setIconSize(size)


#获取图标和图标尺寸
print(btn.icon())
print(btn.iconSize())




# 2.3 展示控件
window.show()



# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())

在这里插入图片描述

6.QAbstractButton快捷键设置

按钮除了可以用鼠标点击之外,还可以通过指定的键盘的组合键,来触发按钮的点击事件,从而发射出相应信号,执行对应的槽函数
在这里插入图片描述

代码展示

# 0. 导入需要的包和模块
from PyQt5.Qt import *  # 主要包含了我们常用的一些类, 汇总到了一块
import sys


# 1. 创建一个应用程序对象
app = QApplication(sys.argv)


# 2. 控件的操作
# 2.1 创建控件
window = QWidget()


# 2.2 设置控件
#设置窗口标题,默认标题是python,只有顶级控件才可以设置标题栏的标题
window.setWindowTitle("按钮快捷键")
#设置窗口大小,注意,设置的空间尺寸大小,不包含上面的标题栏
window.resize(500, 500)


btn = QPushButton(window)

btn.move(100,100)

btn.pressed.connect(lambda :print("按钮被点击了"))
#快捷键方式一,&后面是哪个字母,对应的快捷键就是Alt+字母,&后面要是有多个字母,第一个字母生效
#注意: 设置的快捷键不要与其他程序的快捷键冲突,不然可能不生效
# btn.setText("q&qc")

#快捷键设置方式二,通过setShortcut方法设置对应的快捷键
btn.setText("按钮")
btn.setShortcut("Alt+G")



# 2.3 展示控件
window.show()



# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())

按住 alt+g,就会触发按钮按下
在这里插入图片描述

7.QAbstractButton自动重复

有时候,我们需要点下按钮之后,不松开,不断地向外界发射信号,从而触发对应的槽函数。这时候就用到了QAbstractButton的自动重复设置
在这里插入图片描述

应用场景:比如说飞机大战游戏,长按发射子弹。直播软件长按送花等等,都需要持续性操作发射信号

代码展示

# 0. 导入需要的包和模块
from PyQt5.Qt import *  # 主要包含了我们常用的一些类, 汇总到了一块
import sys


# 1. 创建一个应用程序对象
app = QApplication(sys.argv)


# 2. 控件的操作
# 2.1 创建控件
window = QWidget()


# 2.2 设置控件
#设置窗口标题,默认标题是python,只有顶级控件才可以设置标题栏的标题
window.setWindowTitle("自动重复")
#设置窗口大小,注意,设置的空间尺寸大小,不包含上面的标题栏
window.resize(500, 500)

btn = QPushButton(window)
btn.setText("发射")
btn.move(100,100)


#设置自动重复,默认情况下按钮是没有被设置自动重复的
btn.setAutoRepeat(True)
#设置初次检测延迟,单位毫秒
btn.setAutoRepeatDelay(1000)

#设置自动重复间隔,单位毫秒
btn.setAutoRepeatInterval(500)

#设置信号与槽
btn.pressed.connect(lambda :print("发射子弹了"))


#获取按钮是否设置了自动重复
print("是否设置了自动重复",btn.autoRepeat())

#获取自动重复间隔
print("自动重复间隔",btn.autoRepeatInterval())

#设置初次检测延迟,单位毫秒。防止初次点击就变成了重复。
print("初次检测时间",btn.autoRepeatDelay())

# 2.3 展示控件
window.show()



# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())

运行,按住按钮不松开,看下自动重复触发
在这里插入图片描述

8.QAbstractButton按钮状态

PyQt5中的按钮是可以向外界展示他目前所处的状态的,供用户作参考判定
按钮常见的几种状态:
是否能用
是否被按下
是否被选中

API介绍
在这里插入图片描述

代码展示

# 0. 导入需要的包和模块
from PyQt5.Qt import *  # 主要包含了我们常用的一些类, 汇总到了一块
import sys


# 1. 创建一个应用程序对象
app = QApplication(sys.argv)


# 2. 控件的操作
# 2.1 创建控件
window = QWidget()

btn = QPushButton(window)
btn.setText("按钮")



# 2.2 设置控件
#设置窗口标题,默认标题是python,只有顶级控件才可以设置标题栏的标题
window.setWindowTitle("按钮的状态")
#设置窗口大小,注意,设置的空间尺寸大小,不包含上面的标题栏
window.resize(500, 500)


#创建三个子类按钮
push_button = QPushButton(window)
push_button.setText("这是QPushButton")
push_button.move(100, 100)

radio_button = QRadioButton(window)
radio_button.setText("这是一个radio")
radio_button.move(100, 150)

checkbox = QCheckBox(window)
checkbox.setText("这是checkbox")
checkbox.move(100, 200)


#设置push_button按下后的背景颜色
push_button.setStyleSheet("QPushButton:pressed {background-color: red;}")

# 把三个按钮, 置为按下状态。相当于用户按下鼠标,还没松开
push_button.setDown(True)
radio_button.setDown(True)
checkbox.setDown(True)

#查看按钮是否被按下
print(push_button.isDown())
print(radio_button.isDown())
print(checkbox.isDown())



#设置按钮是否可以被选中,默认QPushButton是不可以被选中的,可以设置。单选和多选按钮默认可以被选中
push_button.setCheckable(True)

#查看按钮是否可以被选中
print(push_button.isCheckable())
print(radio_button.isCheckable())
print(checkbox.isCheckable())

#设置按钮被选中
radio_button.setChecked(True)
push_button.setChecked(True)
checkbox.setChecked(True)

#查看按钮是否被选中
print(push_button.isChecked())
print(radio_button.isChecked())
print(checkbox.isChecked())


#切换选中状态 toggle()

def cao():
    push_button.toggle()
    radio_button.toggle()
    checkbox.toggle()

    # push_button.setChecked(not push_button.isChecked())


#通过btn这个按钮切换三个按钮的选中状态
btn.pressed.connect(cao)







# 2.3 展示控件
window.show()



# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())

运行
在这里插入图片描述

点击左上角按钮,可以切换中间按钮的选中状态
在这里插入图片描述

9.QAbstractButton按钮排他性

如果同时存在多个按钮, 而此时所有按钮又设置了排他性,
则在同一时刻只能选中一个按钮

API介绍
在这里插入图片描述

默认情况下
QRadioButton 具有了可以被选中和排他性功能
QCheckboxButton 具有了可以被选中特性,不具有排他性功能
QPushButton两者均不具备

代码展示:

# 0. 导入需要的包和模块
from PyQt5.Qt import *  # 主要包含了我们常用的一些类, 汇总到了一块
import sys


# 1. 创建一个应用程序对象
app = QApplication(sys.argv)


# 2. 控件的操作
# 2.1 创建控件
window = QWidget()


# 2.2 设置控件
#设置窗口标题,默认标题是python,只有顶级控件才可以设置标题栏的标题
window.setWindowTitle("按钮排他性")
#设置窗口大小,注意,设置的空间尺寸大小,不包含上面的标题栏
window.resize(500, 500)

#循环创建多个多选按钮
for i in range(0, 3):
    btn = QCheckBox(window)
    btn.setText("btn" + str(i))
    btn.move(50 * i, 50 * i)

    #设置排他性为True
    btn.setAutoExclusive(True)
    #查看是否设置了排他性
    print(btn.autoExclusive())
    #查看按钮是否可以被选中
    print(btn.isCheckable())




# 2.3 展示控件
window.show()



# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())

在这里插入图片描述

多选按钮,设置了排他性,每次只能选中一个按钮
在这里插入图片描述

10.QAbstractButton通过代码模拟用户点击

相关API介绍
在这里插入图片描述

animateClick在模拟点击时,会显示点击的动画效果,click()模拟点击时,没有点击的动画效果

# 0. 导入需要的包和模块
from PyQt5.Qt import *  # 主要包含了我们常用的一些类, 汇总到了一块
import sys


# 1. 创建一个应用程序对象
app = QApplication(sys.argv)


# 2. 控件的操作
# 2.1 创建控件
window = QWidget()


# 2.2 设置控件
#设置窗口标题,默认标题是python,只有顶级控件才可以设置标题栏的标题
window.setWindowTitle("按钮模拟点击")
#设置窗口大小,注意,设置的空间尺寸大小,不包含上面的标题栏
window.resize(500, 500)



btn = QPushButton(window)
btn.move(100, 100)
btn.setText("点击")

#设置点击信号与槽
btn.clicked.connect(lambda: print("按钮被点击"))

#使用代码,模拟用户点击按钮
# btn.click()

#动画点击,鼠标按下两秒后松开
#animateClick在模拟点击时,会显示点击的动画效果
btn.animateClick(2000)



# 2.3 展示控件
window.show()



# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())

可以看到,按钮被点击按下时的背景颜色变化
在这里插入图片描述

11.QAbstractButton设置按钮有效点击区域

按钮控件,一般用户点击按钮区域的任何一个点,都会触发点击事件
有些需求,肯呢个会要求点击按钮的某些区域才会触发点击事件,此时该怎么办呢?
此时就用到了设置有效点击区域

相关API介绍
在这里插入图片描述

代码展示

# 0. 导入需要的包和模块
from PyQt5.Qt import *  # 主要包含了我们常用的一些类, 汇总到了一块
import sys


# 1. 创建一个应用程序对象
app = QApplication(sys.argv)


# 2. 控件的操作
# 2.1 创建控件
window = QWidget()


# 2.2 设置控件
#设置窗口标题,默认标题是python,只有顶级控件才可以设置标题栏的标题
window.setWindowTitle("按钮有效区域")
#设置窗口大小,注意,设置的空间尺寸大小,不包含上面的标题栏
window.resize(500, 500)

class Btn(QPushButton):
    #设置按钮有效区域的关键在于重写hitButton方法,该方法必须有个返回值True/False。当该方法返回True,就是有效区域,返回False就是无效区域
    #hitButton的参数point可以获取鼠标的参照按钮的实时坐标
    def hitButton(self, point):
        # print("当前鼠标点击坐标",point)
        #点击按钮右半部分有效
        # if point.x() > self.width() / 2:
        #     return True
        # return False

        # 通过给定的一个点坐标, 计算与圆心的距离
        yuanxin_x = self.width() / 2
        yuanxin_y = self.height() / 2

        #实时点击鼠标的点坐标,通过hitButton的参数获得
        hit_x = point.x()
        hit_y = point.y()

        # ((x1 - x2) 平方 + (y1 - y2) 平方) 开平方
        #半径小于宽度的一半的圆内点击有效
        import math
        distance = math.sqrt(math.pow(hit_x - yuanxin_x, 2) + math.pow(hit_y - yuanxin_y, 2))
        #点击的点距离圆心距离
        # print("点击的点距离圆心距离",distance)
        if distance < self.width() / 2:
            return True

        # 如果距离 < 半径  True
        # 返回 False
        return False




    #绘制事件
    def paintEvent(self, evt):
        #调用父类方法,把按钮原来的图形绘制出来
        super().paintEvent(evt)
        painter = QPainter(self)
        painter.setPen(QPen(QColor(100, 150, 200), 6))

        #绘制椭圆,根据按钮的边界react绘制
        painter.drawEllipse(self.rect())



btn = Btn(window)
btn.move(100, 100)
btn.setText("点击")
btn.resize(200, 200)
btn.pressed.connect(lambda : print("按钮被按下了"))



# 2.3 展示控件
window.show()



# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())

点击圆内部区域,触发点击事件
在这里插入图片描述

点击圆外部,不会触发点击事件

12.QAbstractButton自带的信号

相关API介绍
在这里插入图片描述

代码展示

# 0. 导入需要的包和模块
from PyQt5.Qt import *  # 主要包含了我们常用的一些类, 汇总到了一块
import sys


# 1. 创建一个应用程序对象
app = QApplication(sys.argv)


# 2. 控件的操作
# 2.1 创建控件
window = QWidget()


# 2.2 设置控件
#设置窗口标题,默认标题是python,只有顶级控件才可以设置标题栏的标题
window.setWindowTitle("QAbstractButton信号")
#设置窗口大小,注意,设置的空间尺寸大小,不包含上面的标题栏
window.resize(500, 500)

btn = QPushButton(window)
btn.setText("按钮")
btn.move(100,100)

#按钮被按下时触发
# btn.pressed.connect(lambda :print("按钮被按下"))

#按钮被释放时触发
# btn.released.connect(lambda :print("按钮被释放"))

#按钮被点击时触发,按下释放按钮后触发
# btn.clicked.connect(lambda :print("按钮被点击"))

#信号发射的时候,会发射一个值给外界
#这个值代表着你点击的按钮是否被选中的状态
#QPushButton默认是不可以被选中的,所以得到的值是False
# btn.clicked.connect(lambda value: print("按钮被点击", value))

#将按钮设置为可以被选中
btn.setCheckable(True)
#此时,得到的值就根据按钮是否被选中状态来切换
# btn.clicked.connect(lambda value: print("按钮被点击", value))


#切换信号,是否被选中
#如果按钮不只支持被选中,则该信号不会被触发
btn.toggled.connect(lambda value: print("按钮选中状态发生了改变", value))



# 2.3 展示控件
window.show()



# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())

toggled切换信号
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1942578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聚水潭·奇门对接打通金蝶云星空订单查询接口与销售退货新增接口

聚水潭奇门对接打通金蝶云星空订单查询接口与销售退货新增接口 对接源平台:聚水潭奇门 聚水潭SaaSERP于2014年4月上线&#xff0c;目前累计超过2.5万商家注册使用&#xff0c;成为淘宝应用服务市场ERP类目商家数和商家月订单增速最快的ERP。2014年及2015年“双十一”当天&#…

TQSDRPI开发板教程:实现PL端的UDP回环与GPSDO

本教程将完成一个全面的UDP运行流程与GPSDO测试&#xff0c;从下载项目的源代码开始&#xff0c;通过编译过程&#xff0c;最终将项目部署到目标板卡上运行演示。此外&#xff0c;我们还介绍如何修改板卡的IP地址&#xff0c;以便更好地适应您的网络环境或项目需求。 首先从Gi…

【Java】:洗牌功能和杨辉三角的实现

洗牌 此操作包含的基本功能有&#xff1a; 组牌&#xff1a;组建 52 张扑克牌 四种花色&#xff1a;“♥️”&#xff0c;“♠️”&#xff0c;“⬛️”&#xff0c;“♣️”每种花色 13 张牌&#xff1a;1~13 洗牌&#xff1a;将 52 张扑克牌打乱顺序发牌&#xff1a;给三个人…

MybatisPlus设置动态表名

对于一些数据量比较大的表&#xff0c;为了提高查询性能&#xff0c;我们一般将表拆分成多张表&#xff0c;常见的是根据数据量&#xff0c;按年分表或者按月分表&#xff1b;分表虽然太高了查询性能&#xff0c;但是在查询的时候&#xff0c;如何才能查询执行分表数据呢&#…

谷粒商城实战笔记-45-商品服务-API-三级分类-查询-递归树形结构数据获取

文章目录 一&#xff0c;准备工作1&#xff0c;启动虚拟机2&#xff0c;启动mysql3&#xff0c;执行MySQL脚本插入分类数据4&#xff0c;关于三级分类 二&#xff0c;Controller层新增接口三&#xff0c;Service层新增接口1&#xff0c;代码实现2&#xff0c;测试 从这一节开始…

海康威视综合安防管理平台 detection 前台RCE漏洞复现

0x01 产品简介 海康威视综合安防管理平台是一套“集成化”、“智能化”的平台,通过接入视频监控、一卡通、停车场、报警检测等系统的设备。海康威视集成化综合管理软件平台,可以对接入的视频监控点集中管理,实现统一部署、统一配置、统一管理和统一调度。 0x02 漏洞概述 海康…

Stateflow中的状态转换表

状态转换表是表达顺序模态逻辑的另一种方式。不要在Stateflow图表中以图形方式绘制状态和转换&#xff0c;而是使用状态转换表以表格格式表示模态逻辑。 使用状态转换表的好处包括&#xff1a; 易于对类列车状态机进行建模&#xff0c;其中模态逻辑涉及从一个状态到其邻居的转换…

【Axure高保真原型】批量增加标签——中继器版

今天和大家分享批量增加标签——中继器版的原型模板&#xff0c;效果包括&#xff1a; 添加标签&#xff1a;在输入框了输入需要添加的标签信息&#xff0c;点击添加标签按钮或者按键盘回车键可以动态添加该标签 批量添加&#xff1a;可以一次性添加多个标签&#xff0c;在输入…

15现代循环神经网络—GRU与LSTM

目录 1.门控循环单元 GRU关注一个序列门候选隐状态(candidate hidden state)隐状态总结从零开始代码实现代码简洁实现2.长短期记忆网络 LSTM门候选记忆单元(candidate memory cell)记忆单元隐状态代码1.门控循环单元 GRU GRU 是最近几年提出来的,在 LSTM 之后,是一个稍微简…

FastAPI(六十六)实战开发《在线课程学习系统》接口开发--用户注册接口开发

源码见"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 在前面我们分析了接口的设计&#xff0c;那么我们接下来做接口的开发。 首先&#xff0c;我们先设计下pydantic用户参数的校验&#xff1a; """…

2024-07-20 Unity插件 Odin Serializer2 —— 序列化教程

文章目录 1 由根对象决定序列化2 实现 Odin 序列化器2.1 继承已有序列化类2.2 自定义序列化类 3 避免 Unity 无限深度警告4 指定序列化秘钥4.1 External String Reference Resolver4.2 External GUID Reference Resolver4.3 External Index Reference Resolver 4 功能与限制4.1…

物联网在电力行业的应用

作者主页: 知孤云出岫 这里写目录标题 作者主页:物联网在电力行业的应用简介主要应用领域代码案例分析1. 智能电表数据采集和分析2. 设备监控和预测性维护3. 能耗管理和优化4. 电力负载预测5. 分布式能源管理6. 电动汽车充电管理7. 电网安全与故障检测 物联网在电力行业的应用…

vue3-video-play 导入 以及解决报错

npm install vue3-video-play --save # 或者 yarn add vue3-video-play import Vue3VideoPlay from vue3-video-play; import vue3-video-play/dist/style.css; app.use(Vue3VideoPlay) <template><div id"main-container-part"><div class"al…

基于Qt的上位机通用框架

0.前言 最近一年多的时间一直在开发设备控制相关的软件&#xff0c;加上之前在聚光的两年时间&#xff0c;前前后后开发这种设备控制类型的上位机软件也有三年的时间了。总结出了一套基于Qt的上位机编程框架&#xff0c;核心思想类似于C#的依赖注入&#xff0c;对象的初始化都…

【启明智显分享】甲醛检测仪HMI方案:ESP32-S3方案4.3寸触摸串口屏,RS485、WIFI/蓝牙可选

今年&#xff0c;“串串房”一词频繁引发广大网友关注。“串串房”&#xff0c;也被称为“陷阱房”“贩子房”——炒房客以低价收购旧房子或者毛坯房&#xff0c;用极度节省成本的方式对房子进行装修&#xff0c;之后作为精修房高价租售&#xff0c;因甲醛等有害物质含量极高&a…

[Python库](5) rich库

作者制作不易&#xff0c;关注、点赞、收藏一下吧&#xff01; 目录 1.rich库简介 2.下载并导入rich库 2.1.下载 2.2.导入 3.使用 3.1.输出表情包 3.2.文本的样式 3.3.表格 3.4.日志 1.rich库简介 Rich 是一个 Python 库&#xff0c;用于在终端中添加丰富的文本&…

月影护眼大路灯怎么样?书客|月影|霍尼韦尔超硬核实力性能测评pk!

月影护眼大路灯怎么样&#xff1f;选到专业优质的护眼大路灯是真的可以使我们在用眼时减少疲劳感&#xff0c;达到护眼效果&#xff0c;但如果不慎买到劣质的护眼灯产品&#xff0c;不仅达不到健康的环境光&#xff0c;还越用越觉得眼睛疲劳感加重&#xff0c;在水深的护眼灯市…

数学建模(7)——Logistic模型

一、马尔萨斯人口模型 import numpy as np import matplotlib.pyplot as plt# 初始人口 N0 100 # 人口增长率 r 0.02 # 时间段&#xff08;年&#xff09; t np.linspace(0, 200, 200)# 马尔萨斯人口模型 N N0 * np.exp(r * t)# 绘图 plt.plot(t, N, labelPopulation) plt.…

适用于 Mac 或 MacBook 的最佳数据恢复软件

Apple 设计的电脑可靠且用户友好&#xff0c;但即使是最好的最新款 MacBook硬件也会出现故障。当您的存储出现问题时&#xff0c;数据恢复软件可以帮助您恢复丢失和损坏的文件。 数据丢失的另一个原因是有时会发生令人尴尬的错误。如果您不小心丢弃了所需的文件&#xff0c;然…

《智能物联技术》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问&#xff1a;《智能物联技术》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊。 问&#xff1a;《智能物联技术》级别&#xff1f; 答&#xff1a;省级。主管单位&#xff1a;中国电子科技集团公司 主办单位&#xff1a;…