def connect(signal):
def result(func):
signal.connect(func)
return func
return inner
def safemode(msg):
def inner(func):
@wraps(func):
def result(*args, **kwargs):
print 'Args passed to func:', args, kwargs
try:
func(*args, **kwargs)
except:
print msg
return result
return inner
@connect(form.my_action.triggered)
@safemode('Something bad'?)
def my_action():
print 'Something good!'
所以,当我触发动作时,我看到:
Args passed to func: (False,) {}
Something bad?
由于my_action
没有参数,调用func(*args, **kwargs)
where func
ismy_action
失败。
我知道一种解决方案是删除,*args, **kwargs
但我想对 Qt GUI 函数和非 GUI 函数使用相同的装饰器。
堆栈跟踪不是很有帮助;它只显示app.exec_()
发生故障的行。
这是False
从哪里来的,我该如何解决?