Source code for pymodaq_gui.utils.widgets.qled

import os
import numpy as np
from qtpy import QtCore, QtGui, QtWidgets
from qtpy.QtWidgets import QLabel
from qtpy.QtCore import QObject, Signal
from pymodaq_gui.utils.utils import clickable


[docs] class QLED(QLabel): value_changed = Signal(bool) def __init__(self, parent=None, scale=1, readonly=True): QLabel.__init__(self, parent) # self.setText("") self.red_icon = QtGui.QPixmap("icons:red_light.png") self.green_icon = QtGui.QPixmap("icons:greenLight2.png") self.setPixmap(self.red_icon) self.state = False self.clickable = not readonly # set the possibility to click and control the state of the LED otherwise it behaves as an indicator clickable(self).connect( self.LED_Clicked) # clickable is a function importing a filter class to deal with mouse down event as a signal see GUI_utils self.setText("empty") self.setMaximumWidth(self.height()) if scale != 1: self.scale(scale) self.set_as_false()
[docs] def scale(self, scale): self.green_icon = self.green_icon.scaled(scale * self.green_icon.width(), scale * self.green_icon.height()) self.red_icon = self.red_icon.scaled(scale * self.red_icon.width(), scale * self.red_icon.height())
[docs] def get_state(self): return self.state
[docs] def set_as(self, state=True): if state: self.set_as_true() else: self.set_as_false() if state != self.state: self.value_changed.emit(state)
[docs] def set_as_true(self): self.state = True self.setPixmap(self.green_icon)
[docs] def set_as_false(self): self.state = False self.setPixmap(self.red_icon)
[docs] def LED_Clicked(self): if self.clickable: if self.state: self.set_as_false() else: self.set_as_true() self.value_changed.emit(not self.state)
[docs] def setReadOnly(self, isreadonly: bool): self.clickable = not isreadonly