from time import sleep from threading import Thread def test_a_window(): print "starting window thread" from wxPython.wx import * # <-- the wxWin DLL is not loaded until here app = wxPySimpleApp(1) frame = wxFrame(None, -1, "Hello", size=(400,200)) frame.Show(true) EVT_SIZE(frame, OnFrameSize) app.MainLoop() print "finishing window thread" def OnFrameSize(evt): print evt.GetSize() keep_going = 1 def counter(): print "starting counter thread" count = 0 while keep_going: sleep(1) count += 1 print count print "finishing counter thread" def main(): print "main startup" ct = Thread(target=counter) wt = Thread(target=test_a_window) ct.start() wt.start() wt.join() global keep_going keep_going = 0 ct.join() print "main finished" main()