kivy clock:时钟不执行回调

时间:2015-10-07 04:12:03

标签: python kivy

我正在尝试安排我的服务应用程序向我的主应用程序发送消息。两个代码都能够发送和接收消息。但是,在这段代码中,当我尝试使用Clock.schedule_interval来执行一个函数时,它无法执行。我意识到回调是弱引用的,我引用了原始回调,就像kivy引用站点所暗示的那样。

我确信osc.sendMsg可以工作,因为当我定义了一个使用osc.sendMsg的函数时,它在我调用该函数时成功将消息发送到我的其他main.py.但是,当我将self.answer_message放在Clock.schedule_interval中时,出现问题并且它不会发送消息。我希望这段代码每秒发送一次消息。

我使用了pdb,发现当我把answer.answer_message()放在message_callback下时,它会调用osc.py并将消息发送给我的其他代码。当我在message_callback下放置answer.time()时,它会创建一个时钟事件,但它不会调用answer_message。非常感谢任何帮助。

这是我的服务/ main.py:

import time
from kivy.lib import osc
from kivy.clock import Clock


serviceport = 3000
activityport = 3001


def message_callback(message, *args):
    print("got a message! %s" % message)
    #global switch
    #switch = message[2]
    answer = function()
    answer.time()


class function(object):
    def answer_message(self,dt):
            osc.sendMsg('~/kivyinstall/sahil/reply/step3_active', [time.asctime(time.localtime()), ], port=activityport)
    def time(self):
            Clock.schedule_interval(self.answer_message, 1)


 if __name__ == '__main__':
    osc.init()
    oscid = osc.listen(ipAddr='127.0.0.1', port=serviceport)
    osc.bind(oscid, message_callback, '~/kivyinstall/sahil/reply/step3_active/service')

    while True:
            osc.readQueue(oscid)

0 个答案:

没有答案