-1

I am new to PyQt, I am trying to implement slider in PyQt4, but i don't know why code code is not generating any output.

what i want is, create 3 slider to change 3 values dynamically.

Here i am resizing font size of text "hue", "sat", "val".

Is there is any good source to learn slider in PyQt?

here is my code

PyQt4Slider.py

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class Window(QWidget):
def __init__(self):
    super(Window, self).__init__()
    self.setGeometry(50,50,500,300)
    self.setWindowTiltle("HSV")
    self.home()

def home(self):
    #hue = 100
    #sat = 100
    #val = 100
    layout = QVBoxLayout()
    self.l1 = QLabel("hue")
    self.l2 = QLabel("sat")
    self.l3 = QLabel("val")
    self.l1.setAlignment(Qt.AlignCenter)
    self.l2.setAlignment(Qt.AlignCenter)
    self.l3.setAlignment(Qt.AlignCenter)
    layout.addWidget(self.l1)
    layout.addWidget(self.l1)
    layout.addWidget(self.l1)

    self.sl = QSlider(Qt.Horizontal)
    self.s2 = QSlider(Qt.Horizontal)
    self.s3 = QSlider(Qt.Horizontal)

    self.sl.setMinimum(0)
    self.sl.setMaximum(179)
    self.sl.setValue(20)
    self.sl.setTickPosition(QSlider.TicksBelow)
    self.sl.setTickInterval(5)

    self.s2.setMinimum(0)
    self.s2.setMaximum(255)
    self.s2.setValue(100)
    self.s2.setTickPosition(QSlider.TicksBelow)
    self.s2.setTickInterval(5)

    self.s3.setMinimum(0)
    self.s3.setMaximum(255)
    self.s3.setValue(100)
    self.s3.setTickPosition(QSlider.TicksBelow)
    self.s3.setTickInterval(5)

    layout.addWidget(self.s1)
    self.sl.valueChanged.connect(self.valuechange)
    layout.addWidget(self.s2)
    self.s2.valueChanged.connect(self.valuechange)
    layout.addWidget(self.s3)
    self.s3.valueChanged.connect(self.valuechange)

    self.setLayout(layout)

    def valuechange(self):
        sizel1 = self.sl.value()
        self.l1.setFont("Arial",sizel1)
        sizel2 = self.sl.value()
        self.l2.setFont("Arial", sizel2)
        sizel2 = self.sl.value()
        self.l2.setFont("Arial", sizel2)




def main():
    app = QApplication(sys.argv)
    ex = Window()
    ex.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

here is what i am getting after running code

Ran 0 tests in 0.000s

OK

Process finished with exit code 0 Empty test suite.

Vikas Gautam
  • 441
  • 8
  • 22

1 Answers1

0

Most of the problems in your script are caused by typos. Here is a fixed version that should work okay:

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.setGeometry(50,50,500,300)
        self.setWindowTitle("HSV")
        self.home()

    def home(self):
        layout = QVBoxLayout()
        self.l1 = QLabel("hue")
        self.l2 = QLabel("sat")
        self.l3 = QLabel("val")
        self.l1.setAlignment(Qt.AlignCenter)
        self.l2.setAlignment(Qt.AlignCenter)
        self.l3.setAlignment(Qt.AlignCenter)
        layout.addWidget(self.l1)
        layout.addWidget(self.l2)
        layout.addWidget(self.l3)

        self.s1 = QSlider(Qt.Horizontal)
        self.s2 = QSlider(Qt.Horizontal)
        self.s3 = QSlider(Qt.Horizontal)

        self.s1.setMinimum(0)
        self.s1.setMaximum(179)
        self.s1.setValue(20)
        self.s1.setTickPosition(QSlider.TicksBelow)
        self.s1.setTickInterval(5)

        self.s2.setMinimum(0)
        self.s2.setMaximum(255)
        self.s2.setValue(100)
        self.s2.setTickPosition(QSlider.TicksBelow)
        self.s2.setTickInterval(5)

        self.s3.setMinimum(0)
        self.s3.setMaximum(255)
        self.s3.setValue(100)
        self.s3.setTickPosition(QSlider.TicksBelow)
        self.s3.setTickInterval(5)

        layout.addWidget(self.s1)
        self.s1.valueChanged.connect(self.valuechange)
        layout.addWidget(self.s2)
        self.s2.valueChanged.connect(self.valuechange)
        layout.addWidget(self.s3)
        self.s3.valueChanged.connect(self.valuechange)

        self.setLayout(layout)

        # set the initial fonts
        self.valuechange()

    def valuechange(self):
        sizel1 = self.s1.value()
        self.l1.setFont(QFont("Arial", sizel1))
        sizel2 = self.s2.value()
        self.l2.setFont(QFont("Arial", sizel2))
        sizel3 = self.s3.value()
        self.l3.setFont(QFont("Arial", sizel3))

def main():
    app = QApplication(sys.argv)
    ex = Window()
    ex.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()
ekhumoro
  • 115,249
  • 20
  • 229
  • 336