PySide スライダ
import hou
from PySide2 import QtWidgets
from PySide2 import QtCore
class FloatSliderGrp(QtWidgets.QWidget):
def __init__(self, parent=None):
super(FloatSliderGrp, self).__init__(parent)
hlayout = QtWidgets.QHBoxLayout()
self.setLayout(hlayout)
self.label = QtWidgets.QLabel()
self.label.setText('ラベル')
hlayout.addWidget(self.label)
self.line = QtWidgets.QLineEdit()
self.line.textChanged.connect(self.setSlider)
hlayout.addWidget(self.line)
self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
self.slider.valueChanged.connect(self.disp)
hlayout.addWidget(self.slider)
def disp(self):
v = self.slider.value()
self.line.setText(str(v / 10.0))
def setLabel(self, label):
self.label.setText(label)
def value(self):
return self.slider.value() / 10.0
def setSlider(self):
v = self.line.text()
self.slider.setValue(float(v)*10)
def setMinMax(self, min, max, value):
self.slider.setRange(min*10, max*10)
self.slider.setValue(value*10)
class IntSliderGrp(QtWidgets.QWidget):
def __init__(self, parent=None):
super(IntSliderGrp, self).__init__(parent)
hlayout = QtWidgets.QHBoxLayout()
self.setLayout(hlayout)
self.label = QtWidgets.QLabel()
self.label.setText('ラベル')
hlayout.addWidget(self.label)
self.spin = QtWidgets.QSpinBox()
self.spin.valueChanged.connect(self.setSlider)
hlayout.addWidget(self.spin)
self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
self.slider.valueChanged.connect(self.disp)
hlayout.addWidget(self.slider)
def disp(self):
v = self.slider.value()
self.spin.setValue(v)
def setLabel(self, label):
self.label.setText(label)
def value(self):
return self.slider.value()
def setSlider(self):
v = self.spin.value()
self.slider.setValue(v)
def setMinMax(self, min, max, value):
self.spin.setMinimum(min)
self.spin.setMaximum(max)
self.spin.setValue(value)
self.slider.setRange(min, max)
self.slider.setValue(value)
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setStyleSheet(hou.qt.styleSheet())
self.setProperty('houdiniStyle', True)
main = QtWidgets.QWidget(self)
self.setCentralWidget(main)
layout = QtWidgets.QVBoxLayout()
main.setLayout(layout)
self.slider = IntSliderGrp()
self.slider.setLabel('スケールX')
self.slider.setMinMax(0, 100, 1)
layout.addWidget(self.slider)
self.slider2 = FloatSliderGrp()
self.slider2.setLabel('スケールY')
self.slider2.setMinMax(0, 10, 1)
layout.addWidget(self.slider2)
b = QtWidgets.QPushButton('球体作成')
b.clicked.connect(self.make)
layout.addWidget(b)
def make(self):
obj = hou.node('/obj')
g = obj.createNode('geo')
s = g.createNode('sphere')
t = g.createNode('xform')
t.setInput(0, s)
v = self.slider.value()
t.parm('sx').set(v)
v = self.slider2.value()
t.parm('sy').set(v)
w = MainWindow()
w.show()
Home