diff --git a/examples/wxTerminal.py b/examples/wxTerminal.py
index 646c272..5ba8ba7 100644
--- a/examples/wxTerminal.py
+++ b/examples/wxTerminal.py
@@ -48,7 +48,7 @@
 
 class TerminalSettingsDialog(wx.Dialog):
     """Simple dialog with common terminal settings like echo, newline mode."""
-    
+
     def __init__(self, *args, **kwds):
         self.settings = kwds['settings']
         del kwds['settings']
@@ -98,14 +98,14 @@
     def __attach_events(self):
         self.Bind(wx.EVT_BUTTON, self.OnOK, id = self.button_ok.GetId())
         self.Bind(wx.EVT_BUTTON, self.OnCancel, id = self.button_cancel.GetId())
-    
+
     def OnOK(self, events):
         """Update data wil new values and close dialog."""
         self.settings.echo = self.checkbox_echo.GetValue()
         self.settings.unprintable = self.checkbox_unprintable.GetValue()
         self.settings.newline = self.radio_box_newline.GetSelection()
         self.EndModal(wx.ID_OK)
-    
+
     def OnCancel(self, events):
         """Do not update data but close dialog."""
         self.EndModal(wx.ID_CANCEL)
@@ -115,18 +115,18 @@
 
 class TerminalFrame(wx.Frame):
     """Simple terminal program for wxPython"""
-    
+
     def __init__(self, *args, **kwds):
         self.serial = serial.Serial()
         self.serial.timeout = 0.5   #make sure that the alive event can be checked from time to time
         self.settings = TerminalSetup() #placeholder for the settings
         self.thread = None
-        self.alive = threading.Event()               
+        self.alive = threading.Event()
         # begin wxGlade: TerminalFrame.__init__
         kwds["style"] = wx.DEFAULT_FRAME_STYLE
         wx.Frame.__init__(self, *args, **kwds)
         self.text_ctrl_output = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE|wx.TE_READONLY)
-        
+
         # Menu Bar
         self.frame_terminal_menubar = wx.MenuBar()
         self.SetMenuBar(self.frame_terminal_menubar)
@@ -162,7 +162,7 @@
             self.alive.clear()          #clear alive event for thread
             self.thread.join()          #wait until thread has finished
             self.thread = None
-        
+
     def __set_properties(self):
         # begin wxGlade: TerminalFrame.__set_properties
         self.SetTitle("Serial Terminal")
@@ -237,7 +237,7 @@
             if result == wx.ID_OK or event is not None:
                 try:
                     self.serial.open()
-                except serial.SerialException, e:
+                except serial.SerialException as e:
                     dlg = wx.MessageDialog(None, str(e), "Serial Port Error", wx.OK | wx.ICON_ERROR)
                     dlg.ShowModal()
                     dlg.Destroy()
@@ -265,7 +265,7 @@
         dialog = TerminalSettingsDialog(None, -1, "", settings=self.settings)
         result = dialog.ShowModal()
         dialog.Destroy()
-        
+
     def OnKey(self, event):
         """Key event handler. if the key is in the ASCII range, write it to the serial port.
            Newline handling and local echo is also done here."""
@@ -286,7 +286,7 @@
                     self.text_ctrl_output.WriteText(char)
                 self.serial.write(char)         #send the charcater
         else:
-            print "Extra Key:", code
+            print("Extra Key:", code)
 
     def OnSerialRead(self, event):
         """Handle input from the serial port."""
@@ -314,7 +314,7 @@
                 event = SerialRxEvent(self.GetId(), text)
                 self.GetEventHandler().AddPendingEvent(event)
                 #~ self.OnSerialRead(text)         #output text in window
-            
+
 # end of class TerminalFrame
 
 
