Added wxWakeUpMainThread, wxMutexGuiEnter, wxMutexGuiLeave,
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
This commit is contained in:
		
							
								
								
									
										52
									
								
								wxPython/tests/alternateThread.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								wxPython/tests/alternateThread.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
			
		||||
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()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user