当前位置: 首页>>代码示例>>Python>>正文


Python Event.add_callback方法代码示例

本文整理汇总了Python中event.Event.add_callback方法的典型用法代码示例。如果您正苦于以下问题:Python Event.add_callback方法的具体用法?Python Event.add_callback怎么用?Python Event.add_callback使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在event.Event的用法示例。


在下文中一共展示了Event.add_callback方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: ToasterClient

# 需要导入模块: from event import Event [as 别名]
# 或者: from event.Event import add_callback [as 别名]
class ToasterClient(object):

    MAX_ANSWER_LENGTH = 4096

    PING = "ping"
    GET_STATE = "getState"
    GET_REMAINING_TIME = "getRemainingTime"
    GET_TOASTING_TIME = "getToastingTime"
    SET_TOASTING_TIME = "setToastingTime"
    RESET = "reset"

    OK = "ok"

    def __init__(self, server_ip, port):
        self._ip = server_ip
        self._port = port
        self._socket = None
        self._on_restart_event = Event()
        self._restart()

        Clock.schedule_interval(self._update, 10)

    @property
    def ip(self):
        return self._ip

    @ip.setter
    def ip(self, value):
        self._ip = value
        self._restart()

    @property
    def port(self):
        return self._port

    @port.setter
    def port(self, value):
        self._port = value
        self._restart()

    @property
    def on_restart_event(self):
        return self._on_restart_event.callbacks

    @on_restart_event.setter
    def on_restart_event(self, callback):
        self._on_restart_event.add_callback(callback)

    @_check_socket
    def shutdown(self):
        if self._socket:
            self._socket.close()

    @_check_socket
    def send_ping(self):
        return self._send_command(ToasterClient.PING)

    @_check_socket
    def set_toasting_time(self, toasting_time):
        self._send_command(ToasterClient.SET_TOASTING_TIME, toasting_time)

    @_check_socket
    def get_state(self):
        return self._send_command(ToasterClient.GET_STATE)

    @_check_socket
    def get_toasting_time(self):
        return self._send_command(ToasterClient.GET_TOASTING_TIME)

    @_check_socket
    def get_remaining_time(self):
        return self._send_command(ToasterClient.GET_REMAINING_TIME)

    @_check_socket
    def reset_toasting(self):
        self._send_command(ToasterClient.RESET)

    @_check_socket
    def _send_command(self, command_name, *args):
        try:
            self._socket.send(ToasterClient._get_command(command_name, *args))
            return self._socket.recv(ToasterClient.MAX_ANSWER_LENGTH)
        except error:
            self._socket = None
            return None

    @staticmethod
    def _get_command(command_name, *args):
        if len(args) == 0:
            return command_name
        return command_name + "?" + ",".join(map(str, args))

    def _restart(self):
        if self._socket:
            self._socket.close()

        try:
            self._socket = socket(family=AF_INET, type=SOCK_STREAM)
            self._socket.settimeout(1)
            self._socket.connect((self.ip, self.port))
#.........这里部分代码省略.........
开发者ID:CRivlaldo,项目名称:iToaster,代码行数:103,代码来源:toasterclient.py

示例2: Toaster

# 需要导入模块: from event import Event [as 别名]
# 或者: from event.Event import add_callback [as 别名]
class Toaster(object):

    IDLE = 'idle'
    TOASTING = 'toasting'
    OFFLINE = 'offline'

    def __init__(self, sever_ip, server_port):
        self._toasting_time = Settings.MIN_TOASTING_TIME
        self._state = Toaster.OFFLINE

        self._on_state_changed_event = Event()
        self._on_remaining_time_changed_event = Event()
        self._on_toast_ready_event = Event()

        self._client = ToasterClient(sever_ip, server_port)
        self._client.on_restart_event = self._on_restart_client
        self._on_restart_client()

        Clock.schedule_interval(self._tick, 1)

    def shutdown(self):
        if self._client:
            self._client.shutdown()

    @property
    def toasting_time(self):
        return self._toasting_time

    @toasting_time.setter
    def toasting_time(self, value):
        if self._toasting_time == value:
            return
        self._toasting_time = value
        self._client.set_toasting_time(value)

    @property
    def ip(self):
        return self._client.ip

    @ip.setter
    def ip(self, value):
        self._client.ip = value

    @property
    def port(self):
        return self._client.port

    @port.setter
    def port(self, value):
        self._client.port = value

    @property
    def state(self):
        return self._state

    @property
    def on_state_changed_event(self):
        return self._on_state_changed_event.callbacks

    @on_state_changed_event.setter
    def on_state_changed_event(self, callback):
        self._on_state_changed_event.add_callback(callback)

    @property
    def on_remaining_time_changed_event(self):
        return self._on_remaining_time_changed_event.callbacks

    @on_remaining_time_changed_event.setter
    def on_remaining_time_changed_event(self, callback):
        self._on_remaining_time_changed_event.add_callback(callback)

    @property
    def on_toast_ready_event(self):
        return self._on_toast_ready_event.callbacks

    @on_toast_ready_event.setter
    def on_toast_ready_event(self, callback):
        self._on_toast_ready_event.add_callback(callback)

    def ping(self):
        return self._client.send_ping() == ToasterClient.OK

    def is_online(self):
        return self.state != Toaster.OFFLINE

    def reset_toasting(self):
        if self.state == Toaster.TOASTING:
            self._client.reset_toasting()

    def _on_restart_client(self):
        self._update_toasting_time()
        self._update_state()

    def _tick(self, delta):
        self._update_state()
        if self.state == Toaster.TOASTING:
            self._update_remaining_time()

    def _update_state(self):
        def convert_client_state(client_state):
#.........这里部分代码省略.........
开发者ID:CRivlaldo,项目名称:iToaster,代码行数:103,代码来源:toaster.py


注:本文中的event.Event.add_callback方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。