但要写出完美GUI需要大量的代码经验和文档查询的能力。且每个页面需要有自己的controller,最终所有的controller汇总到一起,统一管理。信号众所周知,GUI中当一个控件的状态改变时需要通知另一个控件,也就是实现了对象间的通信。当事件发生或状态改变时,就会发出信号,信号会触发与这个事件相关联的函数,我们这个函数为槽。以下的代码中,已经包含了信号的定义、指定参数的类型、发射、绑定槽函数等一系列过程。在view中定义信号以及信号何时发射,在controller中定义信号发射后连接的槽函数,即触发何种的响应。view负责页面展示与信号定义,controller负责信号的连接与功能的实现,完美。首先给出一个demo,就是将上面最简单的MVC的例子拆分为三个文件。

PyQt5通过信号实现MVC的示例

PyQt5通过信号实现MVC的示例

PyQt5通过信号实现MVC的示例

PyQt5通过信号实现MVC的示例

PyQt5通过信号实现MVC的示例

PyQt5通过信号实现MVC的示例

PyQt5通过信号实现MVC的示例