title: Kivy and XML RPC
body: <p>I've been trying to perform communication between a kivy GUI module (my server) and another python module (my client). But so far I have problems running the xml rpc server along with the GUI run() function. I still have that problem even after running my server in a thread.
  I hope someone has suggestions on how to fix my code, or just how to xml-rpc along with kivy.</p>
  
  <p>Here is my code:</p>
  
  <pre><code>import kivy
  
  kivy.require('1.7.1')
  
  from kivy.lang import Builder
  
  from kivy.uix.gridlayout import GridLayout
  
  from kivy.app import App
  
  from threading import Thread
  
  from kivy.clock import Clock
  
  Builder.load_file('kivy_gui.kv')
  
  class RoamClientInterface(GridLayout):
  
      """
      Sets up connection with XMLRPC server
  
      """
  
      move = False
  
      """
      driveForward() -&gt; Moves robot forward
      """
  
      def driveForward(self):
          self.move = True
  
      """
      stop() -&gt; stops robot from moving
      """
  
      def stop(self):
          self.move = False
  
      def returnBool(self):
          return self.move
  
  class ClientInterface(App):
  
      def build(self):
          return RoamClientInterface()
  
      def sendCommands(dt):
  
          print "start"
          print ""
          from SimpleXMLRPCServer import SimpleXMLRPCServer
          server = SimpleXMLRPCServer(("localhost", 5000))
          print "initialize server"
          print ""
          server.register_instance(RoamClientInterface())
          print "register instance"
          print ""
          # while True:
  
          try:
              print "try handle request"
              print ""
              server.handle_request()
              print "print handle request"
              print ""
          except KeyboardInterrupt:
              import sys
              sys.exit()
  
  if __name__ == '__main__':
      serverThread = Thread(target=sendCommands(4))
      serverThread.start()
     # Clock.schedule_once(sendCommands)
      ClientInterface().run()
  </code></pre>