Slider

Listing 24 scripts/PYQT5/01_customize_widget/02_slider/main.py
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QSlider
from PyQt5.QtGui import QPalette, QColor
from PyQt5.QtCore import Qt

class ColorSliderWidget(QWidget):
    def __init__(self):
        super(ColorSliderWidget, self).__init__()

        layout = QVBoxLayout()

        self.r_slider = QSlider(Qt.Horizontal)
        self.g_slider = QSlider(Qt.Horizontal)
        self.b_slider = QSlider(Qt.Horizontal)

        self.r_slider.setRange(0, 255)  # Set the range for red slider
        self.g_slider.setRange(0, 255)  # Set the range for green slider
        self.b_slider.setRange(0, 255)  # Set the range for blue slider

        layout.addWidget(self.r_slider)
        layout.addWidget(self.g_slider)
        layout.addWidget(self.b_slider)

        self.r_slider.valueChanged.connect(self.update_color)
        self.g_slider.valueChanged.connect(self.update_color)
        self.b_slider.valueChanged.connect(self.update_color)

        self.setLayout(layout)

    def update_color(self):
        r = self.r_slider.value()
        g = self.g_slider.value()
        b = self.b_slider.value()

        color = QColor(r, g, b)

        palette = self.palette()
        palette.setColor(QPalette.Window, color)
        self.setPalette(palette)
        self.setAutoFillBackground(True)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = ColorSliderWidget()
    window.show()
    sys.exit(app.exec_())

This example creates a PyQt5 widget where the background color changes dynamically as the user moves three sliders (red, green, blue).

  • QSlider(Qt.Horizontal): Creates a horizontal slider. The three sliders adjust the values for red, green, and blue respectively.

  • valueChanged.connect(): Connects to the update_color method to be called every time the slider value changes.

  • update_color: Using the current values from the three sliders, it creates a new QColor object and sets the widget’s background color to that color.