gpt4 book ai didi

javascript - 从 Javascript 调用 PyObjc 函数

转载 作者:搜寻专家 更新时间:2023-10-30 20:26:16 24 4
gpt4 key购买 nike

编辑

自从我发布问题后,我发现了另一个有效的 Objc 示例(http://mattgemmell.com/2008/02/24/skinnable-cocoa-ui-with-webkit-and-css + 来源:http://mattgemmell.com/files/source/skinnableapp.zip)

这是我现在拥有的:

webview_obj_from_jsAppDelegate.py

from Foundation import *
from AppKit import *
import objc

class webview_obj_from_jsAppDelegate(NSObject):
interface = objc.IBOutlet()
def applicationDidFinishLaunching_(self, sender):
NSLog("Application did finish launching.")

def awakeFromNib(self):
self.interface.setFrameLoadDelegate_(self)
path = NSBundle.mainBundle().resourcePath() + '/interface/index.html'
self.interface.setMainFrameURL_(path)
self.interface.windowScriptObject().setValue_forKey_(self, 'AppController')

#this is what I suspect to be the problem
def isSelectorExcludedFromWebScript_(self, aSel):
return NO

def showMessage(self, message):
NSLog(message)

index.html

  <!DOCTYPE html>
<html lang="en">
<head>
<title>title</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta name="description" content="description">
<meta name="keywords" content="">
</head>
<body>
<input id="message_button" type="button" value="Show Message" onClick="window.AppController.showMessage_('I clicked a button and I liked it');" />
</body>
</html>

现在,如果我像这样向 isSelectorExcludedFromWebScript_ 添加一个选择器:

def isSelectorExcludedFromWebScript_(self, aSel):
if aSel is objc.selector(self.showMessage, signature = 'v@:'):
return NO

单击 HTML 按钮会出现此错误:

WebKit discarding exception: <OC_PythonException> <type 'exceptions.ValueError'>: isSelectorExcludedFromWebScript:: returned None, expecting a value

结束编辑

我正在尝试从 javascript 调用 PyObjc 函数,但我无法让它工作。我找到了一个用 Objc 编写的工作示例 (https://github.com/ryanb/cocoa-web-app-example),但没有成功翻译它。

几天前,我偶然发现了这个 (http://stackoverflow.com/questions/2288582/embedded-webkit-script-callbacks-how),它更复杂。不用说,我无法让它工作。

因此,如果有人有一个简单的示例(pyobjc 和 js),如果你能告诉我,我将非常感激。

最佳答案

我可以提个建议吗? Javascript 和 Python 都在处理 HTTP 方面做得非常出色。也许在机器上设置一个 Python HTTP 服务器,当 Javascript 获得触发器时,它可以只对本地服务器执行 XHttpRequest?

或者.. 如果您将 QtWebKit 与 PySide/PyQt 一起使用,则可以让 Javascript 和 Python 聊天(非常粗略)。现在 PyObjC 的支持非常差,在许多情况下只能“勉强工作”,而在大多数情况下则不能。没有冒犯 PyObjC 人员的意思,但公平地说 - 该项目没有像以前那样经常更新。

关于javascript - 从 Javascript 调用 PyObjc 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9298947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com