i want to change slider position, when the self.factor is changed during set_parameter(). More precisely, how to update slider position as the value changes during computation?
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton, QSlider, QShortcut
from PyQt5.QtGui import QKeySequence
class Params():
def __init__(self):
self.factor = 0
def get_parameter(self):
return self.factor
def set_parameter(self, val):
self.factor =val
class SliderWidget(QWidget):
def __init__(self, param: Params):
QWidget.__init__(self)
self.params = param
layout = QVBoxLayout()
self.setLayout(layout)
self.slider = QSlider()
self.slider.valueChanged.connect(self.on_param_change)
layout.addWidget(self.slider)
self.slider.setMinimum(4)
self.slider.setMaximum(8)
def on_param_change(self):
value = self.params.get_parameter()
self.slider.setValue(value)
class Window(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.box = QVBoxLayout()
self.params = Params()
self.scene = SliderWidget(self.params)
self.setCentralWidget(self.scene)
self.shortcutUp = QShortcut(QKeySequence('Ctrl+W'), self)
self.shortcutDw = QShortcut(QKeySequence('Ctrl+S'), self)
self.shortcutUp.activated.connect(self.up)
self.shortcutDw.activated.connect(self.down)
def up(self):
print('up')
value = (self.params.get_parameter() + 1)
self.params.set_parameter(value)
def down(self):
print('down')
value = (self.params.get_parameter() -1)
self.params.set_parameter(value)
import sys
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Window()
win.show()
app.exec_()