Aidan.p 2021-11-03 17:10 采纳率: 0%
浏览 13

关于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信号和槽的连接/断连,有什么比较好的解决办法吗?

  • 写回答

1条回答 默认 最新

  • 於黾 2021-11-03 17:12
    关注

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

    评论

报告相同问题?

问题事件

  • 创建了问题 11月3日

悬赏问题

  • ¥15 在R脚本的一个环节中出现了报错,报错是condition>1
  • ¥15 阻抗控制阻尼参数过小报错
  • ¥15 在Unity开发环境中用NPOI插件输出Word文档可以,当我打包到Windows系统软件的时候输出Word文档就出现文件损坏
  • ¥15 blender将两个混合节点进行混合后模型呈现粉色
  • ¥15 echarts绘制韦恩图
  • ¥60 求一个c语言Linux下的项目代码
  • ¥15 kill GPU process : no such process
  • ¥65 TF卡写入时断电数据错乱的量会是多少?
  • ¥15 解释hlm多层次线性回归
  • ¥15 grbl,限位开关在触发状态,怎么进行自动复位