Module qimview.parameters.numeric_parameter_gui

Expand source code
from ..utils.qt_imports import QtWidgets, QtCore

class NumericParameterGui(QtWidgets.QSlider):
    """
    For the moment, it can only be a slider with associated text
    """
    def __init__(self, name, param, callback, layout=None, parent_name=""):
        QtWidgets.QSlider.__init__(self, QtCore.Qt.Horizontal)
        self.name = name
        self.param = param
        self.callback = callback
        self.event_recorder = None
        self.parent_name = parent_name
        self.widget_name = f"slider_{self.parent_name}_{self.name}"
        self.created = False
        self.decimals = 2
        if layout is not None:
            self.create()
            self.add_to_layout(layout)

    def set_event_recorder(self, evtrec):
        self.event_recorder = evtrec
        if self.event_recorder is not None:
            self.event_recorder.register_widget(id(self), self.widget_name)

    def register_event_player(self, event_player):
        event_player.register_widget(self.widget_name, self)

    def create(self, moved_callback=False):
        self.label = QtWidgets.QLabel("")
        self.setRange(self.param.range[0], self.param.range[1])
        self.setValue(self.param.value)
        self.changed()
        if moved_callback:
            self.sliderMoved.connect(lambda: self.changed(self.callback))
        else:
            self.valueChanged.connect(lambda: self.changed(self.callback))
        self.created = True

    def add_to_layout(self, layout):
        if not self.created:
            self.create()
        layout.addWidget(self.label)
        layout.addWidget(self)

    def reset(self):
        self.setValue(self.param.default_value)

    def changed(self, callback=None):
        self.param.int = int(self.value())
        self.label.setText(f"{self.name} {self.param.float:0.{self.decimals}f}")
        if callback is not None:
            callback()

    def mouseDoubleClickEvent(self, evt):
        self.reset()

    def event(self, evt):
        if self.event_recorder is not None:
            if evt.spontaneous():
                self.event_recorder.store_event(self, evt)
        return QtWidgets.QSlider.event(self, evt)

Classes

class NumericParameterGui (name, param, callback, layout=None, parent_name='')

For the moment, it can only be a slider with associated text

init(self, orientation: PySide6.QtCore.Qt.Orientation, parent: Optional[PySide6.QtWidgets.QWidget] = None) -> None init(self, parent: Optional[PySide6.QtWidgets.QWidget] = None) -> None

Initialize self. See help(type(self)) for accurate signature.

Expand source code
class NumericParameterGui(QtWidgets.QSlider):
    """
    For the moment, it can only be a slider with associated text
    """
    def __init__(self, name, param, callback, layout=None, parent_name=""):
        QtWidgets.QSlider.__init__(self, QtCore.Qt.Horizontal)
        self.name = name
        self.param = param
        self.callback = callback
        self.event_recorder = None
        self.parent_name = parent_name
        self.widget_name = f"slider_{self.parent_name}_{self.name}"
        self.created = False
        self.decimals = 2
        if layout is not None:
            self.create()
            self.add_to_layout(layout)

    def set_event_recorder(self, evtrec):
        self.event_recorder = evtrec
        if self.event_recorder is not None:
            self.event_recorder.register_widget(id(self), self.widget_name)

    def register_event_player(self, event_player):
        event_player.register_widget(self.widget_name, self)

    def create(self, moved_callback=False):
        self.label = QtWidgets.QLabel("")
        self.setRange(self.param.range[0], self.param.range[1])
        self.setValue(self.param.value)
        self.changed()
        if moved_callback:
            self.sliderMoved.connect(lambda: self.changed(self.callback))
        else:
            self.valueChanged.connect(lambda: self.changed(self.callback))
        self.created = True

    def add_to_layout(self, layout):
        if not self.created:
            self.create()
        layout.addWidget(self.label)
        layout.addWidget(self)

    def reset(self):
        self.setValue(self.param.default_value)

    def changed(self, callback=None):
        self.param.int = int(self.value())
        self.label.setText(f"{self.name} {self.param.float:0.{self.decimals}f}")
        if callback is not None:
            callback()

    def mouseDoubleClickEvent(self, evt):
        self.reset()

    def event(self, evt):
        if self.event_recorder is not None:
            if evt.spontaneous():
                self.event_recorder.store_event(self, evt)
        return QtWidgets.QSlider.event(self, evt)

Ancestors

  • PySide6.QtWidgets.QSlider
  • PySide6.QtWidgets.QAbstractSlider
  • PySide6.QtWidgets.QWidget
  • PySide6.QtCore.QObject
  • PySide6.QtGui.QPaintDevice
  • Shiboken.Object

Class variables

var staticMetaObject

Methods

def add_to_layout(self, layout)
Expand source code
def add_to_layout(self, layout):
    if not self.created:
        self.create()
    layout.addWidget(self.label)
    layout.addWidget(self)
def changed(self, callback=None)
Expand source code
def changed(self, callback=None):
    self.param.int = int(self.value())
    self.label.setText(f"{self.name} {self.param.float:0.{self.decimals}f}")
    if callback is not None:
        callback()
def create(self, moved_callback=False)

create(self, arg__1: int = 0, initializeWindow: bool = True, destroyOldWindow: bool = True) -> None

Expand source code
def create(self, moved_callback=False):
    self.label = QtWidgets.QLabel("")
    self.setRange(self.param.range[0], self.param.range[1])
    self.setValue(self.param.value)
    self.changed()
    if moved_callback:
        self.sliderMoved.connect(lambda: self.changed(self.callback))
    else:
        self.valueChanged.connect(lambda: self.changed(self.callback))
    self.created = True
def event(self, evt)

event(self, event: PySide6.QtCore.QEvent) -> bool

Expand source code
def event(self, evt):
    if self.event_recorder is not None:
        if evt.spontaneous():
            self.event_recorder.store_event(self, evt)
    return QtWidgets.QSlider.event(self, evt)
def mouseDoubleClickEvent(self, evt)

mouseDoubleClickEvent(self, event: PySide6.QtGui.QMouseEvent) -> None

Expand source code
def mouseDoubleClickEvent(self, evt):
    self.reset()
def register_event_player(self, event_player)
Expand source code
def register_event_player(self, event_player):
    event_player.register_widget(self.widget_name, self)
def reset(self)
Expand source code
def reset(self):
    self.setValue(self.param.default_value)
def set_event_recorder(self, evtrec)
Expand source code
def set_event_recorder(self, evtrec):
    self.event_recorder = evtrec
    if self.event_recorder is not None:
        self.event_recorder.register_widget(id(self), self.widget_name)