PyQt には、作業を容易にするラッパーはありません。
必要に応じて、独自のものを作成できます。完全ではありませんが、もう少し優れています。たとえば、次のようなもの (実際のコードではなく、単なるスケルトン):
class JSObject(object):
def __init__(self, name):
self.name = name
def __getattr__(self, attr):
class Proxy(object):
def __init__(self, objname, funcname):
self.name = '%s.%s' % (objname, funcname)
def __call__(self, *args):
argstr = ', '.join(json.dumps(arg) for arg in args)
retstr = evaluateJavaScript('%s(%s)' % (self.name, argstr)
# realistically you may want to do more to parse the return
# value—e.g., look up/create JSONObjects as needed?
return json.loads(retstr)
return Proxy(self, attr)
thingIWantToCall = JSObject('thingIWantToCall')
print thingIWantToCall.methodIWantToCallOnIt('foo', [1, 2, 3])
ご覧のとおり、まだ少しぎこちなく、オブジェクト プロキシを手動で作成する必要があり、オブジェクトのメソッドを呼び出す以外に、フリー関数を呼び出したり、変数や何かを宣言したりする方法はありません。そのうちのいくつかは実装できますが、実行できる範囲には制限があります。(もちろん、いつでも明示的な文字列にフォールバックできます。)