【发布时间】:2018-03-13 21:07:52
【问题描述】:
我无法将信号从一个 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"
当我运行线程验证时,变量self.authenticator 不会改变。它停留在“n”。
感谢所有帮助
【问题讨论】:
-
如果你重写了
QThread的run方法,它不会启动自己的事件循环,除非你显式调用它的exec方法。处理跨线程信号需要事件循环。因此,通常最好创建一个工作对象并将其移动到线程,而不是覆盖run。 -
@ekhumoro 有用的信息。如果您可以使用我提供的代码提供示例,是否有可能?
-
我已根据您的示例代码添加了答案。希望您能看到如何调整它以用于您的实际应用程序。
标签: python pyqt signals qthread