2011-06-22 23 views
10

için yöntemleri açığa çıkarma Ben sunucu tarafında gömülü bir WebKit tarayıcısını kontrol etmek için PyQt kullanmayı planlıyorum.PyQt (PySide), WebKit ve/Javascript

Web sayfasının içinde çalışan HTML sayfasında Javascript'te bazı uygulama mantığım var.

  • Ben

  • Python yöntemleri Javascript ve can maruz kalan sayfa içinde JavaScript işlevleri çağırmak, böylece

    Nasıl, ev sahibi süreci JavaScript ile (PyQt) dan iletişim kurabiliriz aşağıdaki kaynak kodu yardımcı olmalıdır

cevap

26

argümanlarla, JavaScript çağrılabilir:

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_() 
+1

Mükemmel! Teşekkürler. –

+3

PySide kullanarak bu örnek: https://gist.github.com/2203822 – webwurst