31 TRIGGER =
'statusChanged'
33 ON_CSS =
"QLabel {background-color: qlineargradient(x1:0.5, y1:0.994318, \
35 stop:0 rgba(51,166,255,255), \
36 stop:1 rgba(51,166,255,150)); \
37 border: 1px solid black; \
41 qproperty-alignment: AlignCenter;}"
43 OFF_CSS =
"QLabel {background-color: qlineargradient(x1:0.5, y1:0.994318, \
45 stop:0 rgba(146,146,146,255), \
46 stop:1 rgba(146,146,146,150)); \
47 border: 1px solid black; \
51 qproperty-alignment: AlignCenter;}"
54 def __init__(self,parent=None, status=False, on_label='ON', off_label='OFF'):
56 @param parent: object parent.
57 @type parent: QObject.
59 @param status: button status (False = off/ True = on).
63 QLabel.__init__(self, parent)
76 self.setStyleSheet(
"QLabel {background-color:#646464;\
77 border: 1px solid black;\
78 border-radius: 5px;}")
81 self._trigger.setMouseTracking(
True)
83 self._trigger.resize(self.width()/2+1,self.height())
84 self.
_th_off = self._trigger.width()/2
86 self.
_on = self.width()-self._trigger.width()
92 self._trigger.setStyleSheet(self.
ON_CSS %(self.height()/4))
94 self._trigger.move(self.
_on,self._trigger.y())
96 self._trigger.setStyleSheet(self.
OFF_CSS %(self.height()/4))
100 """! Get button status.
101 @param status: button status.
104 if self._trigger.x() < self.
_th_off:
110 """! Set button status.
111 @return status: button status (False = off/ True = on).
115 self._trigger.move(self.
_on,self._trigger.y())
116 self._trigger.setStyleSheet(self.
ON_CSS %(self.height()/4))
118 self.emit(SIGNAL(
'statusChanged'),
True)
120 self._trigger.move(self.
_off,self._trigger.y())
121 self._trigger.setStyleSheet(self.
OFF_CSS %(self.height()/4))
123 self.emit(SIGNAL(
'statusChanged'),
False)
126 """! Detect button pressed.
133 """! Detect button released.
139 x = event.pos().
x() - self._trigger.width()/2
142 self._trigger.move(self.
_on,self._trigger.y())
143 self._trigger.setStyleSheet(self.
ON_CSS %(self.height()/4))
146 self._trigger.move(self.
_off,self._trigger.y())
147 self._trigger.setStyleSheet(self.
OFF_CSS %(self.height()/4))
150 self.emit(SIGNAL(
'statusChanged'),self.
get_status())
153 """! Detect button moved.
158 x = event.pos().
x() - self._trigger.width()/2
161 self._trigger.move(self.
_on,self._trigger.y())
162 self._trigger.setStyleSheet(self.
ON_CSS %(self.height()/4))
165 self._trigger.move(self.
_off,self._trigger.y())
166 self._trigger.setStyleSheet(self.
OFF_CSS %(self.height()/4))
169 self._trigger.move(x,self._trigger.y())
177 if self.width() % 2 == 0:
178 self.resize(self.width()+1,self.height())
180 self.resize(self.width(),self.height())
183 self._trigger.setStyleSheet(self.
ON_CSS %(self.height()/4))
185 self._trigger.setStyleSheet(self.
OFF_CSS %(self.height()/4))
187 self._trigger.resize(self.width()/2+1,self.height())
188 self.
_th_off = self._trigger.width()/2
190 self.
_on = self.width()-self._trigger.width()
195 if self._trigger.x() != 0:
196 self._trigger.move(self.
_on,self._trigger.y())