私は wxPython と XMLRPC を使用してアプリを実行しています。XMLRPC サーバーにリクエストがあるたびにウィンドウがアクションを実行する必要があります。
メインウィンドウをブロックせずにどうすればよいですか?
スレッドで試しましたが、機能しませんフレームのコンストラクターでスレッドの run メソッドを呼び出してみましたが、どちらも機能しませんでした
言葉遣いで申し訳ありませんが、明確にしたいと思います ありがとう
私は wxPython と XMLRPC を使用してアプリを実行しています。XMLRPC サーバーにリクエストがあるたびにウィンドウがアクションを実行する必要があります。
メインウィンドウをブロックせずにどうすればよいですか?
スレッドで試しましたが、機能しませんフレームのコンストラクターでスレッドの run メソッドを呼び出してみましたが、どちらも機能しませんでした
言葉遣いで申し訳ありませんが、明確にしたいと思います ありがとう
SimpleXMLRPCServer を使用したスレッド化された XMLRPC サーバーの例を次に示します。wx メイン スレッドを呼び出す wx.CallAfter と "return 0" に注意してください (ただし、None の戻り値が OK になるようにサーバーを構成することはできます)。
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