gpt4 book ai didi

javascript - QtWebKit 桥 : call JavaScript functions

转载 作者:行者123 更新时间:2023-11-29 21:53:42 25 4
gpt4 key购买 nike

我正在编写一个具有 HTML 界面和 Python 代码的混合应用程序。我可以通过共享对象访问 Python 函数:

pythonPart.py:

class BO(QObject):
def __init__(self, parent=None):
super(BO, self).__init__(parent)

@Slot(str)
def doStuff(self, txt):
print(txt)

bridgeObj = BO()

# init stuff and frame...
frame.addToJavaScriptWindowObject( 'pyBridge', bridgeObj )
frame.evaluateJavaScript('alert("Alert from Python")')
frame.evaluateJavaScript('testMe()')
frame.evaluateJavaScript('alert("Starting test");testMe();alert("Test over")')

jsPart.js:

function testMe() { alert('js function testMe called'); }

pyBridge.doStuff("bla");
testMe();

从 JS 调用 Python 函数和从 JS 调用 testMe 一样。从 Python 调用“标准”JS 函数(如 alert)也可以。

最后两行 Python 不会:evaluateJavaScript("testMe()") 根本不做任何事情。最后一行执行第一个警报,之后不会继续。

编辑:我已经尝试在加载和调用 evaluateJavaScript 之间设置一些 time.sleep() 并且我正在加载网页本地机器。

最佳答案

最有可能的问题是 JavaScript 尚未加载。添加 time.sleep() 调用对此没有帮助,它们还会阻止 Qt 事件循环继续,而不仅仅是您的 Python 代码。

尝试等待页面完全加载,例如(使用 the loadFinished signal :

def onLoad():
frame.evaluateJavaScript('testMe()')

frame.loadFinished.connect(onLoad)

此外,为了在这种情况下获得更多调试信息,您可能需要实现 QtWebKit.QWebPage.javaScriptConsoleMessage .

关于javascript - QtWebKit 桥 : call JavaScript functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27590399/

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