Kivy和XML RPC

时间:2013-06-25 15:53:07

标签: python user-interface xml-rpc kivy

我一直在尝试在kivy GUI模块(我的服务器)和另一个python模块(我的客户端)之间进行通信。但到目前为止,我在运行xml rpc服务器以及GUI run()函数时遇到了问题。即使在线程中运行我的服务器后,我仍然遇到这个问题。 我希望有人就如何修复我的代码提出建议,或者就如何将xml-rpc与kivy一起提出建议。

这是我的代码:

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() -> Moves robot forward
    """

    def driveForward(self):
        self.move = True

    """
    stop() -> 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()

1 个答案:

答案 0 :(得分:2)

我必须解决这个问题。 实际上有必要将它放入RoamClientInterface内部以使其工作,而不是像我上面那样将它放入我的主函数中。 如果有人需要帮助,我可以提供更多详细信息(显示代码)