2011-08-17 9 views
2

저는 현재 파이썬에서 wxpython을 사용하는 GUI를 사용하여 프로그램을 작성하고 있습니다. 이 프로그램은 여러 python 스크립트를 평가하는 함수를 가지고 있으므로 gui를 끊습니다. 이 함수에 대해 별도의 프로세스를 사용하려고합니다. 문제는 함수가 UI로부터 몇 가지 것을 필요로한다는 것입니다; listctrl 및 textctrl을 사용하여 실행 된 스크립트에 대한 정보를 업데이트합니다. 프로세스에 의해 실행되는 방법의wxPython 객체를 다중 프로세서 인수로 전달

def CreateProcess(): 
    q = Queue() 
    q.put(gui.caselist) 
    q.put(gui.textlog) 
    p = Process(target=runScripts, args=(q,)) 
    p.start() 

부 : 프로세스에 프로세스를 생성하고 시작

PicklingError: Can't pickle <type 'PySwigObject'>: attribute lookup __builtin__.PySwigObject failed 

방법을 wxPython에 객체를 전달하려고 할 때 다음 오류가 수신

def runScripts(q): 
    caselist = q.get() 
    text = q.get() 
+0

설명을 보려면 [LongRunningTasks 위키 페이지] (http://wiki.wxpython.org/LongRunningTasks)를 읽고이를 수행하는 방법에 대한 예제 코드를 작성하십시오. – unutbu

답변

2

기본적으로 할 수 없습니다. 결과를 다시 전달하고 GUI 스레드가 listctrltextctrl을 업데이트하도록해야합니다.

산세 오류에 대한 정보는 this mailing list thread을 참조하십시오.

관련 문제