关于pyqt 在线程中无法连接信号和槽函数的问题

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import time
import threading
import sys

class single_widge():
    def __init__(self):
        pass

    def get_msg(self, msg):
        print(msg)

class main_widge(QObject):
    msg_signal = pyqtSignal(list)

    def __init__(self):
        super().__init__()
        self.sg = single_widge()

        self.bbb = threading.Thread(target=self.cont)
        self.bbb.start()
        self.aaa = threading.Thread(target=self.send_msg)
        self.aaa.start()


    def send_msg(self):
        while True:
            self.msg_signal.emit([11111111, 222222222])
            time.sleep(1)

    def cont(self):
        self.msg_signal.connect(self.sg.get_msg)


if __name__ == '__main__':
    app = QApplication(sys.argv)

    aaa = main_widge()

    app.exec_()


程序的总体思路就是在类中生成的两个线程,一个线程启动后持续发送信号,另一个线程启动后仅将该信号和槽函数连接。结果表明连接语句并没有起到效果。
我将连接语句放在线程函数send_msg下,或者放在__init__下都可以正常运行。
请问这种情况是为什么?
我写这个例子的本意是需要在线程中实现pyqt信号和槽的连接/断连,有什么比较好的解决办法吗?

连接必须在主线程里执行
而且子线程所有需要修改UI的操作必须使用委托