Python @pyqtSlot()导致在与其他装饰器一起使用时调用错误的处理程序方法
我的问题与本主题的前一个问题相关: 问题是,如果我用同一组decorator创建更多的方法,每个信号都调用同一个,这有点奇怪。示例如下:Python @pyqtSlot()导致在与其他装饰器一起使用时调用错误的处理程序方法,python,pyqt,decorator,Python,Pyqt,Decorator,我的问题与本主题的前一个问题相关: 问题是,如果我用同一组decorator创建更多的方法,每个信号都调用同一个,这有点奇怪。示例如下: signal_1.connect(fun_1) signal_2.connect(fun_2) @pyqtSlot() @handle_exceptions def fun_1(): print('aaaaa') @pyqtSlot() @handle_exceptions def fun_2(): print('bbbbb') sign
signal_1.connect(fun_1)
signal_2.connect(fun_2)
@pyqtSlot()
@handle_exceptions
def fun_1():
print('aaaaa')
@pyqtSlot()
@handle_exceptions
def fun_2():
print('bbbbb')
signal_1.emit()
signal_2.emit()
输出:
aaaaa
aaaaa
创建装饰器时,它将函数作为参数接收,PyQt使用该函数的名称作为指向将用于插槽的实际函数的指针,除非给出特定名称,否则它实际上会返回该函数的包装器 由于对同一个包装器func_包装器使用插槽装饰器,PyQt认为它们是同一个函数,并覆盖上一个函数或忽略下一个函数,我不确定:我得到了不同的结果,因为有时调用第一个函数,其他函数调用第二个函数 这与eyllanesc在中的解释有关,我认为这是更正确的方法 尽管如此,另一种解决方案可能是将唯一名称设置为插槽的参数:
@pyqtSlot(name='fun_1')
@handle_exceptions
def fun_1():
print('aaaaa')
@pyqtSlot(name='fun_2')
@handle_exceptions
def fun_2():
print('bbbbb')
创建装饰器时,它将函数作为参数接收,PyQt使用该函数的名称作为指向将用于插槽的实际函数的指针,除非给出特定名称,否则它实际上会返回该函数的包装器 由于对同一个包装器func_包装器使用插槽装饰器,PyQt认为它们是同一个函数,并覆盖上一个函数或忽略下一个函数,我不确定:我得到了不同的结果,因为有时调用第一个函数,其他函数调用第二个函数 这与eyllanesc在中的解释有关,我认为这是更正确的方法 尽管如此,另一种解决方案可能是将唯一名称设置为插槽的参数:
@pyqtSlot(name='fun_1')
@handle_exceptions
def fun_1():
print('aaaaa')
@pyqtSlot(name='fun_2')
@handle_exceptions
def fun_2():
print('bbbbb')
你必须使用更多关于需要阅读答案的信息
你必须使用更多关于需要阅读答案的信息
我自己永远也弄不明白。谢谢我自己永远也弄不明白。谢谢