Дерево страниц

resources/gui_and_objects/schedule_object.py

После перезагрузки трассира часто может возникнуть ситуация, когда некоторые объекты загружаются дольше чем скрипт.
Если скрипт работает с объектами, например расписания через метод host.object('My Schedule') то после перезагрузки скрипт может вызвать ошибку: 
ERROR: EnvironmentError: object 'My Schedule' not found

Предотвратить данную ошибку можно с помощью класса ScheduleObject 

Аргументы класса

  • name_or_guid (str): Имя или guid объекта
  • color_change_handler (callable, optional): Функция, которая вызывается при изменении состояния объекта. В функцию передается аргумент self
  • tries (int, optional): Кол-во попыток загрузки объекта, по умолчанию 5.


Если для инициализации объекта используется название - оно должно быть уникально для всех объектов в трассире, в т.ч. объектов на других северах, подключеных по сетик к главному серверу. 

Например, если сервер Б подключен по сети к серверу А и на обоих серверах есть расписание с именем "Schedule" то скрипта на сервере А он выберет рандомно один из объектов. 

Также если на одном сервере, например IP Устройство и Канал называются одинаково - то скрипт также выберет рандомно объект.

Кол-во попыток ~ равны кол-ву секунд ожидания загрузки объекта, т.е. каждая следующая попытка происходит ~ через 1 секунду

Публичные атрибуты

  • name (str): Имя объекта
  • guid (str): Guid объекта
  • color ('Red' | 'Green' | 'Blue' | None): Возвращает текущий цвет расписания. None если объект еще не загружен.
  • prev_color ('Red' | 'Green' | 'Blue' | None): Возвращает предыдущий цвет расписания. None если объект еще небыло смены цвета. Если не установлен color_change_handler то prev_color всегда возвращает None

Примеры скриптов

По нажатию клавиши F1 отображаем текущий цвет расписания
import host
from schedule_object import ScheduleObject

schedule = ScheduleObject("Unnamed Schedule")


def show_schedule_color():
    host.message("Current color: %s" % schedule.color)


host.activate_on_shortcut("F1", show_schedule_color)
Выводим сообщение при смене цвета расписания
import host
from schedule_object import ScheduleObject


def color_change_handler(obj):
    host.message("Color changed %s -> %s" % (obj.prev_color, obj.color))


schedule = ScheduleObject("Unnamed Schedule", color_change_handler=color_change_handler)