我无法将信号从一个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”。
所有帮助赞赏
答案 0 :(得分:1)
如果覆盖run
的{{1}}方法,除非明确调用其QThread
方法,否则它不会启动自己的事件循环。处理跨线程信号需要事件循环。因此,通常最好创建一个工作对象并将其移动到线程,而不是覆盖exec
。
这是一个演示脚本,演示如何使用带有线程的worker对象:
run