Расширенная кнопка
ButtonEx
Расширенная кнопка
from extronlib.ui import Button
from extronlib.system import ProgramLog
from extronlib import event
class ButtonEx(Button):
def __init__(self, room, ID, holdTime=None, repeatTime=None):
self.UIHost = room.UIHost
self.id = ID
self.room = room
Button.__init__(self, self.UIHost, self.id, holdTime, repeatTime)
self.eventsFunc = {}
self.__indicator = False
self.__switch = False
self.__state = False
event(self, ['Pressed','Released','Held','Tapped','Repeated'])(self.__event)
@property
def Suffix(self):
return self.Name.split('_')[-1]
@property
def Number(self):
return int(self.Name.split('_')[-1])
@property
def SwitchState(self):
return self.__state
@property
def IsIndicator(self):
return self.__indicator
@property
def IsSwitch(self):
return self.__switch
def __event(self, b, s):
if self.__indicator == True: return
if self.__switch == False:
{
'Pressed': lambda: self.SetState(1),
'Released': lambda: self.SetState(0),
'Held': lambda: self.SetBlinking('Fast',[0,1]),
'Tapped': lambda: self.SetState(0),
'Repeated': lambda: None,
}.get(s)()
try:
if self.eventsFunc.get(s):
self.eventsFunc.get(s)(b,s)
except Exception as e:
ProgramLog('[{}]: {}'.format(__name__, e))
def Listener(self, func, state):
s=[]
s.extend(state) if type(state) in (list, tuple,) else s.append(state)
if hasattr(self.room, func) and callable(getattr(self.room, func)):
for s1 in s:
event(self, s1)(self.__event)
self.eventsFunc[s1] = getattr(self.room, func)
# else:
# ProgramLog('No [{}] method in parent'.format(func),'warning')
def MakeIndicator(self, state=True):
self.__indicator = state
self.SetState(0)
def MakeSwitch(self, state=True):
self.__switch = state
self.SwitchReset()
def SwitchToggle(self):
self.__state = not self.__state
self.SetState(int(self.__state))
return self.__state
def SwitchSet(self):
self.__state = True
self.SetState(int(self.__state))
def SwitchReset(self):
self.__state = False
self.SetState(int(self.__state))Создаем словарь типа (tupple, dict):
Ключ (tuple) - имена (или id) кнопок;
Значение - словарь параметров:
func - имя вызываемого метода (обязательно);
action - список событий (по умолчанию - Released);
holdTime - время удержания (по умолчанию - None);
repeatTime - время между повторами (по умолчанию - None);
switch- состояние определяется программой (по умолчанию - False);
indicator- определяет будет ли ожидаться событие или работает как индикатор(по умолчанию - False);
Last updated