python - 我可以创建一个不是类的字段成员的新样式 pyqt 信号吗?

标签 python pyqt4 signals-slots qthread

因此,我可以看到使用 PyQt4 创建样式信号的唯一方法如下:

class MyCustomClass(QtCore.QThread):
    custom_signal = QtCore.pyqtSignal(str)

我的不满是,如果我在其他地方声明该信号,pyqt 会向我抛出一个错误,说明 custom_signal 没有 connect() 函数。

当我想做一些简单的事情时,我想创建一个辅助函数来帮助删除样板/重复代码:启动一个新线程,在该线程中工作,将结果作为信号发送给一个对象。但是当我需要在类中定义信号时,这就很难了。

有什么方法可以让信号只是一个局部变量?

最佳答案

不确定我是否正确理解了你的问题,但从你的评论来看,定义一个适用于任何类型的信号似乎就足够了?如果是这种情况,您可以使用 object 作为类型:

class MyCustomClass(QtCore.QThread):
    custom_signal = QtCore.pyqtSignal(object)

简单测试:

>>> def callback(result):
...    print type(result)
...
>>> obj = MyCustomClass()
>>> obj.custom_signal.connect(callback)
>>> obj.custom_signal.emit('hello')
<type 'str'>
>>> obj.custom_signal.emit({'x': 1})
<type 'dict'>

关于python - 我可以创建一个不是类的字段成员的新样式 pyqt 信号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11199622/

相关文章:

python 网络x : do networkx's centrality algorithms use a weighted adjacency matrix?

python - 在 QListWidget 上自定义 PyQt 多点触控平移手势

Python QWebView : Accessing Network Resources

python - 在 PyQt 中读取文件

c++ - QObject::connect 中 Func2 类型的参数?

c++ - QComboBox 信号未触发

python - 使用记录超过10000条的python从Elasticsearch结果写入CSV吗?

python - 如何为我的 py2exe 发行版创建 list 文件?

python - Pydoc 弄乱了 -*- 编码 : utf-8 -*-

python - 单击 PyQt 表项时更改属性