Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Writing directly to the Frame Buffer with PySide/PyQt



  • I have a headless Linux OS, with no X Server or window management configured. Can anyone offer any suggestions as to how I could write my QWidgets, etc. directly to the Frame Buffer?


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Take a look at the Qt for Embedded Linux and the various backends it proposes.



  • Thanks for that SGaist. Can you recommend any reading/source which is Qt4-compatible? My project is in PySide, so I imagine I won't have access to many of the Qt5-based backends.


  • Lifetime Qt Champion

    Either go with PySide2 or Qt4 for Embedded Linux.

    I'd recommend the former for new project since Qt 4 has reached end of life.



  • @SGaist said in Writing directly to the Frame Buffer with PySide/PyQt:

    Either go with PySide2 or Qt4 for Embedded Linux.

    I'd recommend the former for new project since Qt 4 has reached end of life.

    Thanks SGaist :)

    Since my last post, I've done some further reading and am considering using PyQt5 instead of PySide on this particular project. I am however quite confused as to the setup of PyQt5; the PyQt site says the GPL version of PyQt installs the LGPL version of Qt automatically. I.e. there is no need to build Qt yourself. However, my understanding is that I need to configure the Qt installation for my platform and requirements (e.g. EGLFS enabled). My primary concern is ensuring the application will run and display without an X environment; is this enabled as standard under Qt5.x and PyQt5, or do I need to build Qt explicitly for this?

    PySide2 seems to be compatible with some of the earlier versions of Qt5.x, so hopefully PySide2 offers Frame Buffer display support.


  • Lifetime Qt Champion

    No, you have to compile Qt for your target and the PySide/PyQt against that version of Qt.

    One thing that should be clear, the backend used to paint your application has nothing to do with PyQt or PySide but Qt itself, thus you can develop your application on your desktop and then test it on your target.



  • @SGaist said in Writing directly to the Frame Buffer with PySide/PyQt:

    No, you have to compile Qt for your target and the PySide/PyQt against that version of Qt.

    One thing that should be clear, the backend used to paint your application has nothing to do with PyQt or PySide but Qt itself, thus you can develop your application on your desktop and then test it on your target.

    Thanks SGaist, your help has been very much appreciated.

    I think I understand the process now. I've contacted Qt to try and make sense of the licensing, and will hopefully be giving PyQt5 with cross-compiled Qt a go in the very near future.


  • Lifetime Qt Champion

    PyQt5 is either GPL or Commercial, so if you want to make a closed source application with PyQt5 you have to buy a commercial licence from them.



  • @SGaist said in Writing directly to the Frame Buffer with PySide/PyQt:

    PyQt5 is either GPL or Commercial, so if you want to make a closed source application with PyQt5 you have to buy a commercial licence from them.

    This project is for an embedded device, which I believe carries its own particular considerations. I've not downloaded anything for the time being, as I need to read up on cross compiling of Qt anyway.


Log in to reply