2011-08-17 48 views
2

我目前正在使用wxpython在使用gui編寫python程序。該程序具有評估多個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() 

部分:嘗試wxPython的對象傳遞給過程,創建和啓動過程

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

方法時收到以下錯誤

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

閱讀[LongRunningTasks維基頁面(http://wiki.wxpython.org/LongRunningTasks)關於如何做到這一點的解釋和完整的示例代碼。 – unutbu 2011-08-17 13:01:01

回答

2

基本上,你不能。您需要將結果傳回並讓GUI線程更新listctrltextctrl。有關酸洗錯誤的信息,請參閱this mailing list thread

相關問題