在threading.Thread对象中使用PySide.QtCore.Signal

时间:2013-07-30 16:17:34

标签: python multithreading pyside

我正在使用这样的东西:

import threading
from PySide import QtCore

class Smt(threading.Thread):
    foo_signal = QtCore.Signal(object)

    def __init__(self):
        threading.Thread.__init__(self)

    def run(self);
        while True:
            pass # and so..

然后我开始了:

a = Smt()
a.foo_signal.connect(function)
a.start()

输出结果为:

AttributeError: 'PySide.QtCore.Signal' object has no attribute 'connect'

如果我使用QtCore.QThread代替threading.Thread - 它效果很好。但我不想使用QThread

甚至可能吗?

1 个答案:

答案 0 :(得分:3)

信号要求使用它们的类继承自QObject(或任何继承QObject的类)。因此,您可以切换到使用QThread,也可以继承QObject并在QtCore.QObject.__init__(self)

中调用__init__