Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PyQt(PySide)、WebKit和从/向Javascript公开方法_Javascript_Python_Webkit_Pyqt_Pyside - Fatal编程技术网

PyQt(PySide)、WebKit和从/向Javascript公开方法

PyQt(PySide)、WebKit和从/向Javascript公开方法,javascript,python,webkit,pyqt,pyside,Javascript,Python,Webkit,Pyqt,Pyside,我计划使用PyQt控制服务器端的嵌入式WebKit浏览器 我在WebKit内部运行的HTML页面中有一些Javascript继承应用程序逻辑 如何使用Javascript从主机进程(Python、PyQt)进行通信,以便 我可以在页面内调用Javascript函数 Python方法暴露于Javascript中,可以从Javascript调用,并带有参数 以下源代码应该会有所帮助: import sys from PyQt4.QtCore import QObject, pyqtSlot fro

我计划使用PyQt控制服务器端的嵌入式WebKit浏览器

我在WebKit内部运行的HTML页面中有一些Javascript继承应用程序逻辑

如何使用Javascript从主机进程(Python、PyQt)进行通信,以便

  • 我可以在页面内调用Javascript函数

  • Python方法暴露于Javascript中,可以从Javascript调用,并带有参数


    • 以下源代码应该会有所帮助:

      import sys
      from PyQt4.QtCore import QObject, pyqtSlot
      from PyQt4.QtGui import QApplication
      from PyQt4.QtWebKit import QWebView
      
      html = """
      <html>
      <body>
          <h1>Hello!</h1><br>
          <h2><a href="#" onclick="printer.text('Message from QWebView')">QObject Test</a></h2>
          <h2><a href="#" onclick="alert('Javascript works!')">JS test</a></h2>
      </body>
      </html>
      """
      
      class ConsolePrinter(QObject):
          def __init__(self, parent=None):
              super(ConsolePrinter, self).__init__(parent)
      
          @pyqtSlot(str)
          def text(self, message):
              print message
      
      if __name__ == '__main__':
          app = QApplication(sys.argv)
          view = QWebView()
          frame = view.page().mainFrame()
          printer = ConsolePrinter()
          view.setHtml(html)
          frame.addToJavaScriptWindowObject('printer', printer)
          frame.evaluateJavaScript("alert('Hello');")
          frame.evaluateJavaScript("printer.text('Goooooooooo!');")
          view.show()
          app.exec_()
      
      导入系统 从PyQt4.QtCore导入QObject,pyqtSlot 从PyQt4.QtGui导入QApplication 从PyQt4.QtWebKit导入QWebView html=”“” 你好!
      """ 类控制台接口(QObject): def uuu init uuu(self,parent=None): 超级(控制台间,自我)。\uuuuu初始化\uuuuuuu(父级) @pyqtSlot(str) def文本(自我、消息): 打印消息 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': app=QApplication(sys.argv) 视图=QWebView() frame=view.page().mainFrame() 打印机=控制台打印机() view.setHtml(html) frame.addToJavaScriptWindowObject('printer',printer) evaluateJavaScript(“警报('Hello');”) frame.evaluateJavaScript(“printer.text('gooooooo!');”) view.show() app.exec()