def METHOD_NAME(self, delaysec: float, func: Callable, *args: Any, **kwds: Any):
    """
    Add an event to the event loop.
    :param delaysec: delay in seconds for event
    :param func: event function
    :param args: event arguments
    :param kwds: event keyword arguments
    :return: created event
    """
    with self.lock:
        eventnum = self.eventnum
        self.eventnum += 1
        evtime = float(delaysec)
        if self.running:
            evtime += time.monotonic()
        event = Event(eventnum, evtime, func, *args, **kwds)
        if self.queue:
            prevhead = self.queue[0]
        else:
            prevhead = None
        heapq.heappush(self.queue, event)
        head = self.queue[0]
        if prevhead is not None and prevhead != head:
            if self.timer is not None and self.timer.cancel():
                self.timer = None
        if self.running and self.timer is None:
            self._schedule_event()
    return event