[英]'PySide2.QtCore.Signal' object has no attribute 'connect'
I am trying to create a custom signal for a QRunnable Object for my PySide2 application. 我正在尝试为PySide2应用程序创建QRunnable对象的自定义信号。 All examples have led me create a signal the following way: 所有例子都让我通过以下方式创建信号:
class Foo1(QtCore.QObject):
def __init__():
super().__init__()
self.thread = Foo2()
self.thread.signal.connect(foo)
def foo():
# do something
class Foo2(QtCore.QRunnable):
signal = QtCore.Signal()
However, I am getting the following error on self.thread.signal.connect(foo)
: 但是,我在self.thread.signal.connect(foo)
上收到以下错误:
'PySide.QtCore.Signal' object has no attribute 'connect'
How should I implement a custom signal for a QRunnable object? 我应该如何为QRunnable对象实现自定义信号?
A QRunnable is not a QObject so it can not have signals, so a possible solution is to create a class that provides the signals: QRunnable不是QObject,因此它不能有信号,因此可能的解决方案是创建一个提供信号的类:
class FooConnection(QtCore.QObject):
foosignal = QtCore.Signal(foo_type)
class Foo2(QtCore.QRunnable):
def __init__(self):
super(Foo2, self).__init__()
self.obj_connection = FooConnection()
def run(self):
# do something
foo_value = some_operation()
self.obj_connection.foosignal.emit(foo_value)
class Foo1(QtCore.QObject):
def __init__():
super().__init__()
self.pool = Foo2()
self.pool.obj_connection.foosignal.connect(foo)
QtCore.QThreadPool.globalInstance().start(self.pool)
@QtCore.Slot(foo_type)
def foo(self, foo_value):
# do something
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.