Python在两个QThread之间发送信号

时间:2017-10-02 18:31:36

标签: python pyqt signals qthread

我无法将信号从一个qthread发送到另一个qthread。我正在使用的类似代码摘录如下:

class auth(QtCore.QThread):
    authenticate = pyqtSignal()
    serverDown = pyqtSignal()
    accntonline = pyqtSignal()

    def __init__(self, parent=None):
        super(auth, self).__init__(parent)
    def run(self):
        self.authenticate.emit()

class Threadclass(QtCore.QThread):
    authenticator = "n"
    def __init__(self, parent=None):

        super(Threadclass, self).__init__(parent)
        #setting first values avoiding errors

        self.a = auth(self)

        self.a.authenticate.connect(self.setauthentication)

    #All small functions setting values from box.

    def setauthentication(self):
        print("awdawdawda")
        self.authenticator = "y"

当我运行线程auth时,变量self.authenticator不会改变。它保持在“n”。 所有帮助赞赏

1 个答案:

答案 0 :(得分:1)

如果覆盖run的{​​{1}}方法,除非明确调用其QThread方法,否则它不会启动自己的事件循环。处理跨线程信号需要事件循环。因此,通常最好创建一个工作对象并将其移动到线程,而不是覆盖exec

这是一个演示脚本,演示如何使用带有线程的worker对象:

run