python - 'PySide2.QtCore.Signal' 对象没有属性 'connect'
问题描述
我正在尝试为我的 PySide2 应用程序的 QRunnable 对象创建自定义信号。所有示例都导致我通过以下方式创建信号:
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()
但是,我收到以下错误self.thread.signal.connect(foo)
:
'PySide.QtCore.Signal' object has no attribute 'connect'
我应该如何为 QRunnable 对象实现自定义信号?
解决方案
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
推荐阅读
- kotlin - 从设置中获取 gradle 属性
- python-3.x - 将动态字段添加到序列化程序类
- javascript - 如何在提交时返回第二份注册表?
- oracle - LiveSQL 不断向我显示:ORA-00933:SQL 命令未正确结束
- javascript - 从输入下拉菜单转到 URL
- javascript - Vuex 状态一直说它未定义
- bash - 在 bash shell 脚本中使用时,多行变量不适用于参数
- php - 在 Flatsome - Woocommerce 上更改简码 ux_product_categories 的产品类别标题标签
- sql - R DBI 不支持的列类型 ANYDATA
- computer-vision - Google Colab:“有没有办法使用网络摄像头流式传输视频并进行处理?”