博客汇总:Python | 人脸识别系统 — 博客索引
GitHub地址:Su-Face-Recognition
注:阅读本博客前请先参考
工具安装、环境配置:Python | 人脸识别系统 — 简介
UI界面设计:Python | 人脸识别系统 — UI界面设计
一、 按钮触发事件
创建类 UserMainWindow ,继承PyQt.QMainWindow类 以及 我们自己编写的UI类 UserMainUi 。初始化类方法 __init__() 中使用以下代码进行UI的初始化:
UI类 UserMainUi 类的界面设计部分在博客 UI界面设计 中
def __init__(self, parent=None):
super(UserMainWindow, self).__init__(parent)
self.setupUi(self)
这样,我们就可以在 UserMainWindow 类中使用 self 引用 UserMainUi 类的属性,如按钮、文本域等。按钮的触发事件通过以下方法绑定:
self.按钮名.clicked.connect(方法名)
如为按钮 login_button 绑定一个类方法 self.user_login() ,就可以使用下面的代码实现:
self.login_button.clicked.connect(self.user_login)
二、信号槽
当我们点击某一个按钮的时候,可能需要使用另一个类的方法或者打开某一个界面(这个界面的逻辑代码在另一个类中),我们就需要使用信号槽。
信号槽是Qt的一种信息传输机制。当某一个界面发生变化的时候,可能需要通知其他对象进行相应的操作,这时候就使用信号槽机制,将通知的信息进行发射(emit)。
a.创建信号槽
首先,我们需要在 发送的类中 创建一个信号槽,通过 pyqtSignal() 方法进行创建,如下面的代码创建了一个名为 signal_register (注册)的信号槽:
signal_register = pyqtSignal()
b.关联需要通知的对象
接下来就需要使用信号槽去 关联 我们需要通知的对象,在 main 方法中,我们分别创建了 发送类的对象(如主界面的对象) 以及 接收类的对象(如注册界面的对象),通过如下代码进行连接:
发送类的对象.信号槽.connect(接收类的对象.show)
其中 xxx.show() 方法是 Qt 的方法,功能是打开这个界面。具体的代码如下:
if __name__ == "__main__":
app = QApplication(sys.argv)
# 主界面
user_win = UserMainWindow()
# 注册界面
register = RegisterWindow()
# 进行信号槽的连接
user_win.signal_register.connect(register.show)
# 展示主界面
user_win.show()
sys.exit(app.exec_())
c.通过按钮的触发事件发射信号
通过 emit() 方法实现事件的发射,如下:
信号槽.emit()
最后我们结合上面说的按钮触发以及信号槽,实现点击某一个按钮打开某个界面的功能。项目中具体代码如下:
def __init__(self, parent=None):
super(UserMainWindow, self).__init__(parent)
self.setupUi(self)
self.register_button.clicked.connect(self.send_signal_register)
... ...
# 发射信号 打开注册用户界面
def send_signal_register(self):
self.signal_register.emit()
d.整体结构
# 主界面
class UserMainWindow(QMainWindow, UserMainUi):
signal_register = pyqtSignal() # 用户注册 界面信号
def __init__(self, parent=None):
super(UserMainWindow, self).__init__(parent)
self.setupUi(self)
self.register_button.clicked.connect(self.send_signal_register)
... ...
# 发射信号 打开注册用户界面
def send_signal_register(self):
self.signal_register.emit()
# 注册界面
class RegisterWindow(QMainWindow, RegisterMsgUi):
def __init__(self, parent=None):
super(RegisterWindow, self).__init__(parent)
self.setupUi(self)
... ...
if __name__ == "__main__":
app = QApplication(sys.argv)
# 主界面
user_win = UserMainWindow()
# 注册界面
register = RegisterWindow()
# 进行信号槽的连接
user_win.signal_register.connect(register.show)
# 展示主界面
user_win.show()
sys.exit(app.exec_())
继续阅读:
摄像头画面展示:Python | 人脸识别系统 — 摄像头画面展示
用户端逻辑:
- 人脸识别:Python | 人脸识别系统 — 人脸识别
- 活体检测:Python | 人脸识别系统 — 活体检测
- 背景模糊:Python | 人脸识别系统 — 背景模糊
- 姿态检测:Python | 人脸识别系统 — 姿态检测
- 人脸比对:Python | 人脸识别系统 — 人脸比对
- 用户操作:Python | 人脸识别系统 — 用户操作
管理员端逻辑:文章来源:https://www.toymoban.com/news/detail-517655.html
- 管理员操作:Python | 人脸识别系统 —— 管理员操作
注:以上代码仅供参考,如需运行,参考GitHub源代码: Su-Face-Recognition文章来源地址https://www.toymoban.com/news/detail-517655.html
到了这里,关于Python | 人脸识别系统 — UI事件处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!