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()
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 |