Important: Please read the Qt Code of Conduct -

Python Backend/QML Frontend Can I Convert To WebAssembly?

  • I have only seen examples converting C++ Qt apps to WebAssembly using EMscripten. I have not seen anything converting Qt apps with a Python 'backend' to WebAssembly...

    Are there any examples out there? Any tools available for this? For example an app like so with the following:

    QML frontend:


    import QtQuick 2.12
    import QtQuick.Window 2.2
    import QtQuick.Controls 2.3
    ApplicationWindow {
        id: window
        visible: true
        width: Screen.width
        height: Screen.height
        color: "white"
        Button {
            anchors.centerIn: parent
            onClicked: {

    And a Python "backend":

    from PySide2.QtCore import Qt, QObject, Signal, Slot, QCoreApplication
    from PySide2.QtWidgets import QApplication
    from PySide2.QtQml import QQmlApplicationEngine
    import sys
    class Backend(QObject):
    	def __init__(self):
    	def hi_from_qml(self, name):
    		print(f'Hi from qml: {name}')
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        engine = QQmlApplicationEngine()
        ctx = engine.rootContext()
        backend = Backend()    
        ctx.setContextProperty("backend", backend)    
        if not engine.rootObjects():

    One starts up the app like so from the terminal:

    Ed-MacBook-Air:test$ python3 
    Hi from qml: Nombre

    How would I convert this QML/Python app to Webassembly to serve through the browser? Any help would be greatly appreciated, I've been looking everywhere.

    A possible but unfortunate workaround I'm thinking about in case this is not possible...Use PyBind11 as a thin 'C++ layer' between my existing QML frontend and my Python backend. And then compile that with EMscripten and be able to serve that, would that work?


  • Is there anyone out there in the universe?! Anyone?! :)

  • Lifetime Qt Champion


    Yes there is. Qt for WASM being pretty new, you will have to be more patient because there's currently likely not a lot of people using it here.

    As for your question, I would say currently no.

    This stack overflow answer will likely be of interest with regard to Python and WASM.

  • I am unsure about python webassembly, but googling got me this:

  • Thanks guys @SGaist and @lorn-potter

    It seems like it is not really supported at this time and I will have to look into the alternative of putting a layer between the QML and Python backend in C++, essentially becomes a C++ app, but I only want to use C++ as a pass through to the Python somehow using PyBind11...I will try to see if that will work.

Log in to reply