The Current State of Marble's Python Support

Installation instructions have now been created, see my new post about it .

Over the past month or so I have had the chance through Google Code-In to work on some tasks with . Marble is a virtual globe developed under the umbrella of KDE and . Most of the tasks have been related to Marble's Python bindings and porting the current C++ tutorials over to Python. These Python bindings are seen as rather important to Marble, because Python is often a more preferable language amongst the scientific and web developer communities to C++. The Marble python bindings have also been used successfully in some  (). Marble is not only a but all of it's functionality is available as a framework for other  apps to use. Some prominent recent examples include the usage in and .

Hello World Example

Here is a Hello World for Marble's Python bindings:

from PyQt4.QtGui import * from PyKDE4.marble import * import sys def main(): # Initialize QApplication app = QApplication(sys.argv) # Create a Marble QWidget m = Marble.MarbleWidget() # Load the OpenStreeMap map m.setMapThemeId("earth/openstreetmap/openstreetmap.dgml") # Show the window # Run the app app.exec_() main()

And this is what it looks like when run:
Pretty easy right? There have been 8 tutorials ported to Python already. They can be found .
Alternatively here is a list of the already completed ones:

What are the Current Limitations?

Some of the deeper integration features have not yet been implemented, along with some smaller, more trivial ones. The trivial ones include .The deeper limitations include that Python programs cannot be used as plugins for Marble's core application and that Marble's to access the information backing Marble. There are however to try and address these more critical limitations that would allow more access from the Marble Python bindings.

Note that all these features can be accomplished with the C++ API and they are just limitations of the Python bindings.

Plans for the Future

The Marble developers are keen on addressing the lack of documentation and training available for Marble. These tutorials have been a big step in giving examples to the community of how Marble's Python bindings can be used for real applications. One other big step is making sure the via the


Have you given Marble's Python bindings a go? what were your thoughts? Something missing that you want added? Let us know in a comment, or send an email though to



Benjamin Kaiser

Benjamin Kaiser

Software Engineer working on the SharePoint team at Microsoft. I'm passionate about open source, slurpess, and Jesus.
Gold Coast, Australia

Post Comments