大唐秦汉 2023-09-13 15:51 采纳率: 44.4%
浏览 5
已结题

我其实是想在线程函数fsmf中发一个信号,在shishi函数中收到这个信号,怎么办?

从线程发信号,在线程外面收信号,不会用。

img


我其实是想在线程函数fsmf中发一个信号,在shishi函数中收到这个信号,怎么办?

  • 写回答

3条回答 默认 最新

  • 关注

    你这代码写的是真乱。给你写了个例子,根据下面的例子修改即可:

    
    import sys
    
    from PyQt5 import QtCore
    from PyQt5.QtCore import pyqtSignal, QObject
    from PyQt5.QtWidgets import QMainWindow, QApplication
    
    
    # 线程类
    class QTSignal(QtCore.QThread):
        sendmsg = pyqtSignal(int)
    
        def __init__(self):
            super(QTSignal,self).__init__()
            self.g1g1=1
    
        # 线程函数,这里写你的逻辑
        def run(self):
            for i in range(10):
                self.g1g1 = i # 这里根据你的需要调整g1g1的值,我这里直接遍历了i
                self.sendmsg.emit(self.g1g1)
    
    # 信号处理类,这里绑定信号和槽函数,在槽函数中处理
    class shili(QMainWindow): # 这里集成QMainWindow类是为了显示窗口
    
        def __init__(self):
            super(shili,self).__init__()
            self.send = QTSignal()
            self.send.sendmsg.connect(self.shishi)
    
        def fsmf(self):
            self.send.start() # 启动线程,进行处理
    
        def shishi(self,val):
            print(val) # 槽函数,val是线程发送的数据
    
    # 测试
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        form = shili()
        form.fsmf()
        form.show()
        sys.exit(app.exec_())
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月14日
  • 已采纳回答 9月14日
  • 创建了问题 9月13日