Can I create a new style pyqt signal that isn'

2019-07-22 10:09发布

So for the only way that I can see to create a style signal with PyQt4 is as follows:

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

My beef is if I declare that signal anywhere else, pyqt throws an error at me about how custom_signal doesn't have a connect() function.

I would like to create a helper function to help remove the boilerplate/repeated code when I want to do something as simple as: starting a new thread, doing work in that thread, sending the result as a signal to an object. But it's hard when I need the signals to be defined in a class.

Any way to have a signal just be a local variable?

1条回答
别忘想泡老子
2楼-- · 2019-07-22 10:35

Not sure if I'm understanding your question correctly, but from your comment it sounds like it's sufficient to define a signal that will work for any type? If that's the case, you could use object as the type:

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

Simple test:

>>> 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'>
查看更多
登录 后发表回答