wxMutexGuiLocker and wxThread_IsMain to assist with dealing with GUI access from non-GUI threads. wxPyOnDemandOutputWindow is now thread safe if non-GUI threads use print, sys.stdout.write, etc. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9590 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			53 lines
		
	
	
		
			875 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			875 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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()
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |