pyqt5 python qlineedit信号_PyQt5通过信号实现MVC的示例

本文通过示例介绍了如何使用PyQt5的信号和槽实现MVC模式,包括自定义信号与槽的绑定,以及在实际GUI应用中的应用,如登录界面的实现。代码分为Model、View和Controller三个部分,强调了代码组织和信号连接的重要性。
摘要由CSDN通过智能技术生成

这篇文章主要介绍了PyQt5通过信号实现MVC的示例,帮助大家更好的理解和使用pyqt5,感兴趣的朋友可以了解下

众所周知MVC是个好东西。前阵子网上搜了下,但关于用PyQt5实现MVC的中文文档缺少之又少,优质的文档只搜到了一篇。既然这样,来,开个坑,学习新知识,吸引流量。话说,关于PyQt5,布局那里需要好好看看,容器类控件需要好好看看,还有多线程和自动化测试那块。但要写出完美GUI需要大量的代码经验和文档查询的能力。然后,嗯,这部分坑就填完了。

扯回正题:假设此时面临的场景是,一个软件涉及好几个页面,每个页面是单独的代码。且每个页面需要有自己的controller,最终所有的controller汇总到一起,统一管理。

本文中,文字只是辅助理解,务必读懂代码。

信号

众所周知,GUI中当一个控件的状态改变时需要通知另一个控件,也就是实现了对象间的通信。当事件发生或状态改变时,就会发出信号,信号会触发与这个事件相关联的函数,我们这个函数为槽。信号与槽可以是多对多的关系。信号在类创建时定义,即需要在初始化的前面定义。

自定义信号与槽

别问,静静感受以下代码。以下的代码中,已经包含了信号的定义、指定参数的类型、发射、绑定槽函数等一系列过程。

from PyQt5.QtCore import QObject, pyqtSignal

# 信号对象

class QSignal(QObject):

# 定义信号

# 在类创建时定义,不能在类创建后作为类的属性而添加

# 指定信号传递参数的数量,类型等

send_msg = pyqtSignal(str, str)

def __init__(self):

super(QSignal, self).__init__()

def run(self):

# 信号发射

self.send_msg.emit('First arg', 'Second arg')

# 槽对象

class QSlot(QObject):

def __init__(self):

super(QSlot, self).__init__()

def get(self, *args):

# 信号接收

print("Get message =>" + args[0], args[1], sep=', ')

if __name__ == '__main__':

send = QSignal()

slot = QSlot()<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值