1
我在做一個應用程序絲毫的wxPython和XML-RPC我需要的窗口沒有一個動作每次XMLRPC服務器的請求線程的wxPython和XMLRPC
我怎麼能做到這一點,而不會阻塞主窗口的時間?
我試圖與線程,但它不工作我也打過電話線的框架的構造函數中的run方法既不是它的工作
很抱歉的語言 我希望明確 感謝
我在做一個應用程序絲毫的wxPython和XML-RPC我需要的窗口沒有一個動作每次XMLRPC服務器的請求線程的wxPython和XMLRPC
我怎麼能做到這一點,而不會阻塞主窗口的時間?
我試圖與線程,但它不工作我也打過電話線的框架的構造函數中的run方法既不是它的工作
很抱歉的語言 我希望明確 感謝
這裏的使用SimpleXMLRPCServer的線程化XMLRPC服務器的示例。請注意wx.CallAfter調用wx主線程和「返回0」(儘管您可以配置服務器以使返回值None。)
from SimpleXMLRPCServer import SimpleXMLRPCServer
import threading
class XMLRPCServerThread(threading.Thread):
def __init__(self, remoteObject, host='localhost', port=8000):
self.remoteObject = remoteObject
self.host = host
self.port = port
threading.Thread.__init__(self)
def stop(self):
self.server.shutdown()
def run(self):
self.server = SimpleXMLRPCServer((self.host, self.port), logRequests=False)
self.server.register_instance(self.remoteObject)
self.server.serve_forever()
class MyRemoteCalls(object):
def __init__(self, obj):
self.obj = obj
def exampleCall(self, arg):
wx.CallAfter(self.obj.method, arg)
return 0
def getRPCThread(obj, host='localhost', port=8000):
remoteObj = MyRemoteCalls(obj)
rpcThread = XMLRPCServerThread(remoteObj, host, port)
rpcThread.start()
return rpcThread
您能告訴我們您的代碼嗎?另外,你的意思是什麼不起作用 - 你會得到一個異常,回溯,segfault?如果你能發佈你得到的實際結果,這將有所幫助。 – aquavitae
你可以開始一個新的線程來處理新的請求,只要記得在試圖從新線程更新GUI時使用'wx.CallAfter'。 – bouke