The concept of a web application is broader than you might guess: using the webbrowser as a graphical user interface (GUI) makes sense even if you are just running a stand alone application on a local machine. After all, every machine has a browser intalled nowadays, so using this as a GUI might save you from headaches trying to find a cross platform GUI toolkit that looks good and is familiar to the user.
In order to use the browser as a user interface we have to start it up in a platform independent way, start a web application framework serving our application at the same time and make sure that the new web browser window points to the correct location. This sounds like a lot of work but in Python this is actually rather straightforward.
Let's have a look at the following code:
return 'Hi There'
if __name__ == "__main__":
If you save the code above as
webapp.py and you have CherryPy installed, you can start the program by typing the following in a terminal (or dos-box):
It will start up a webserver running on your local machine that listens on port 8080. It will also start up a new browser window and direct it to
http://127.0.0.1:8080. The Python version is not relevant here as we do not use any 3.x specific constructs.
The trick is to utilize Python's bundled module webbrowser to open a browser window in a cross platform compatible way as implemented in the
openbrowser() function. We do not call this function right away though, because the browser then might start before there is a webserver running. We cannot start CherryPy first either, because the
quickstart() function does not return. Therefor we instantiate a
Timer object from the threading module and tell it to call our
openbrowser() function after three seconds, which should be plenty of time for the CherryPy server to start.