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
引数を取らないため、where is の呼び出しはfunc(*args, **kwargs)
失敗func
しmy_action
ます。
1 つの解決策は単に削除すること*args, **kwargs
ですが、Qt GUI 関数と非 GUI 関数の両方に同じデコレータを使用したいと思います。
スタック トレースはあまり役に立ちません。app.exec_()
障害が発生した行が表示されるだけです。
それはどこFalse
から来て、どうすれば修正できますか?