我正在做一个应用程序惠特wxPython和XMLRPC我需要每次XMLRPC服务器有请求时窗口都会执行操作
如何在不阻挡主窗口的情况下完成这项工作?
我尝试使用线程,但它不起作用我也尝试在Frame的构造函数中调用线程的run方法,但是它没有工作
对不起该语言 我希望能够清楚 感谢
答案 0 :(得分:1)
以下是使用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