Ejemplo n.º 1
0
class WheelBox(QWidget):
    valueChanged = pyqtSignal('double', name="valueChanged")

    def __init__(self, title, min, max, stepSize, parent):
        super().__init__(parent)

        self.__d_number = QLCDNumber(self)
        self.__d_number.setSegmentStyle(QLCDNumber.Filled)
        self.__d_number.setAutoFillBackground(True)
        self.__d_number.setFixedHeight(self.__d_number.sizeHint().height() * 2)
        self.__d_number.setFocusPolicy(Qt.WheelFocus)

        pal = QPalette(Qt.black)
        pal.setColor(QPalette.WindowText, Qt.green)
        self.__d_number.setPalette(pal)

        self.__d_wheel = Wheel(self)
        self.__d_wheel.setOrientation(Qt.Vertical)
        self.__d_wheel.setInverted(True)
        self.__d_wheel.setRange(min, max)
        self.__d_wheel.setSingleStep(stepSize)
        self.__d_wheel.setPageStepCount(5)
        self.__d_wheel.setFixedHeight(self.__d_number.height())

        self.__d_number.setFocusProxy(self.__d_wheel)

        font = QFont("Helvetica", 10)
        font.setBold(True)

        self.__d_label = QLabel(title, self)
        self.__d_label.setFont(font)

        hLayout = QHBoxLayout()
        hLayout.setContentsMargins(0, 0, 0, 0)
        hLayout.setSpacing(2)
        hLayout.addWidget(self.__d_number, 10)
        hLayout.addWidget(self.__d_wheel)

        vLayout = QVBoxLayout(self)
        vLayout.addLayout(hLayout, 10)
        vLayout.addWidget(self.__d_label, 0, Qt.AlignTop | Qt.AlignHCenter)

        self.__d_wheel.valueChanged.connect(self.display)

        self.__d_wheel.valueChanged.connect(self.valueChanged)

    def display(self, value):
        self.__d_number.display(value)

    def theme(self):
        return self.__d_wheel.palette().color(QPalette.Window)

    def setTheme(self, color):
        self.__d_wheel.setPalette(QPalette(color))

    def setValue(self, value):
        self.__d_wheel.setValue(value)
        self.__d_number.display(value)

    def value(self):
        return self.__d_wheel.value()

    theme = pyqtProperty(QColor, theme, setTheme)