wxPython is a wrapper for the cross-platform GUI API wxWidgets, which have a native look and file. Here are few resources for working with it.
A GCode-STL viewer in Python (wxPython for the GUI and PyOpenGl for the 3D visualization): https://github.com/dkobozev/tatlin
There are manu GUI builders, my favourite is wxFormBuilder. But only from version 3.3 it exports the code in Python, so here's the link to the right folder: http://sourceforge.net/projects/wxformbuilder/files/wxformbuilder-nightly/3.3.04-beta/. Remember that the app export only the classes that you create/customize, you then have to create objects and launch the app, for example with a code like this:
# -*- coding: utf-8 -*- # Main library import wx # This is the file as exported from wxFormBuilder. It is just a .py file in the same folder import wxidelib # Create an app ex = wx.App() # Create a frame from my custom class ex1 = wxidelib.MyFrame1(None) # Show the frame! Otherwise it won't work. wxFormBuilder does not add this ex1.Show() # Initialize the event loop ex.MainLoop()
The important thing when reading data from serial, is to bind the reading of the data to a timer, so that the app will read data only at a certain rate and it won't crash. Here's a basic example that draws a line and a rectangle from the wxPython API (but you can use other Python libraries for drawing, like Matplotlib or Cairo).