[PyQt] PyQt Release Plans and Qt v4.4 Support

Henning Schröder henning.schroeder at gmail.com
Fri Apr 18 04:21:25 BST 2008


Ok I got the snapshot working by changing "void *a0" into "uchar *a0"
for QFile::unwrap :-)

I was playing a litte bit with QtWebKit after reading
http://www.trolltech.com/pdf/qt-webkit-mar-2008-whitepaper-a4.pdf
There is an example which shows that is possible that a webpage can
interact with QObjects by exposing slots to JavaScript.

I can do nearly the same with the pyqtSignature decorator, which is
cool. Unfortunately this only works one way because I cannot define a
result type.
Could this be added to the decorator?


Here is an example:

#!/usr/bin/env python
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *

class PythonJS(QObject):

    def __init__(self):
        QObject.__init__(self, qApp)
        self.setObjectName("python")

    @pyqtSignature("QString")
    def alert(self, msg):
        print "alert called"
        print msg

    @pyqtSignature("")
    def fortune(self):
        print "fortune called"
        return 23 # XXX: does not work


if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    browser = QWebView()
    browser.show()
    #browser.load(QUrl("http://www.google.com"))
    browser.setHtml("""
       <script>function fortune() { return 42; }</script>
       <h1>Hello, world</h1>
       <input type="button" value="Click JS!" onClick="alert('hi ' +
fortune())"/>
       <input type="button" value="Click PY!"
onClick="python.alert('hi ' + python.fortune())"/>
    """)
    frame = browser.page().mainFrame()
    frame.addToJavaScriptWindowObject("python", PythonJS())
    app.exec_()


More information about the PyQt mailing list