Skip to content

Instantly share code, notes, and snippets.

@blink1073
Last active December 28, 2015 14:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save blink1073/7514681 to your computer and use it in GitHub Desktop.
Save blink1073/7514681 to your computer and use it in GitHub Desktop.
Javascript in Enaml
# -*- coding: utf-8 -*-
"""
Created on Sun Nov 17 09:15:29 2013
@author: Steven Silvester <steven.silvester@ieee.org>
@license: MIT
Adapted from @pedrotechless answer:
http://stackoverflow.com/questions/6447011/pyqt-pyside-webkit-and-exposing-methods-from-to-javascript
"""
from enaml.widgets.api import MainWindow, Container, WebView
from enaml.qt import QtCore
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(QtCore.QObject):
def __init__(self, parent=None):
super(ConsolePrinter, self).__init__(parent)
@QtCore.pyqtSlot(str)
def text(self, message):
print 'console printer', message
enamldef Main(MainWindow):
Container:
WebView:
attr printer = ConsolePrinter()
activated ::
frame = self.proxy.widget.page().mainFrame()
frame.addToJavaScriptWindowObject('printer', printer)
frame.evaluateJavaScript("alert('Hello');")
frame.evaluateJavaScript("printer.text('Goooooooooo!');")
html = html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment