def testFloatSignal(self): foo1 = QDoubleSpinBox() foo2 = QDoubleSpinBox() foo1.valueChanged[float].connect(foo2.setValue) foo2.valueChanged[float].connect(foo1.setValue) foo1.setValue(0.42) self.assertEqual(foo1.value(), foo2.value())
class Double3(QFrame): """ A 3 slider Line for 3d arrays """ valuesChanged = Signal(list) def __init__(self, parent=None): super(Double3, self).__init__(parent) self.x = QDoubleSpinBox() self.y = QDoubleSpinBox() self.z = QDoubleSpinBox() self.setLayout(line(self.x, self.y, self.z)) # connecting all signals for elem in (self.x, self.y, self.z): elem.valueChanged.connect(self.element_value_changed) def element_value_changed(self): self.valuesChanged.emit([self.x.value(), self.y.value(), self.z.value()]) def setValues(self, xyz): x, y, z = xyz self.x.setValue(x) self.y.setValue(y) self.z.setValue(z)
class Double3(QFrame): """ A 3 slider Line for 3d arrays """ valuesChanged = Signal(list) def __init__(self, parent=None): super(Double3, self).__init__(parent) self.x = QDoubleSpinBox() self.y = QDoubleSpinBox() self.z = QDoubleSpinBox() self.setLayout(line(self.x, self.y, self.z)) # connecting all signals for elem in (self.x, self.y, self.z): elem.valueChanged.connect(self.element_value_changed) def element_value_changed(self): self.valuesChanged.emit( [self.x.value(), self.y.value(), self.z.value()]) def setValues(self, xyz): x, y, z = xyz self.x.setValue(x) self.y.setValue(y) self.z.setValue(z)
def testFloatSignal(self): foo1 = QDoubleSpinBox() foo2 = QDoubleSpinBox() foo1.valueChanged[float].connect(foo2.setValue) foo2.valueChanged[float].connect(foo1.setValue) foo1.setValue(0.42) self.assertEqual(foo1.value(), foo2.value())
class AddFilterDlg(QDialog): def __init__(self, parent=None): super(AddFilterDlg, self).__init__(parent) self.setWindowTitle("Advanced Filtering Options") note_label = QLabel("NOTE: These filtering options apply exclusively to relief devices, not to the relief device area they belong to or to their scenarios.") pressure_label = QLabel("Filter where <b>Set Pressure</b> is") self.pressure_combobox = QComboBox() self.pressure_combobox.addItems(["Greater Than", "Less Than", "Equal To", "Not Equal To"]) self.pressure_value = QDoubleSpinBox() pressure_layout = QHBoxLayout() pressure_layout.addWidget(pressure_label) pressure_layout.addWidget(self.pressure_combobox) pressure_layout.addWidget(self.pressure_value) button_box = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel) layout = QGridLayout() layout.addWidget(note_label, 0, 0) layout.addLayout(pressure_layout, 1, 0) layout.addWidget(button_box, 2, 0) self.setLayout(layout) button_box.accepted.connect(self.accept) button_box.rejected.connect(self.reject) def returnVals(self): return (self.pressure_combobox.currentText(), self.pressure_value.value())
def testQRealSignal(self): foo1 = QDoubleSpinBox() effect = QGraphicsBlurEffect() effect.blurRadiusChanged['qreal'].connect( foo1.setValue) # check if qreal is a valid type effect.setBlurRadius(0.42) self.assertAlmostEqual(foo1.value(), effect.blurRadius())
class Double4(Double3): """ A 4 slider Line for 4d arrays (quaternion) """ def __init__(self, parent=None): super(Double4, self).__init__(parent) self.w = QDoubleSpinBox() self.layout().addWidget(self.w) self.w.valueChanged.connect(self.element_value_changed) def element_value_changed(self): self.valuesChanged.emit([self.x.value(), self.y.value(), self.z.value(), self.w.value()]) def setValues(self, xyzw): x, y, z, w = xyzw self.x.setValue(x) self.y.setValue(y) self.z.setValue(z) self.z.setValue(w)
class SimpleSpinOption(SimpleOption): def __init__(self, settingsName, labelText, defaultValue, integer=False, checkable=False): self.integer = integer super(SimpleSpinOption,self).__init__(settingsName, labelText, defaultValue, checkable) def editor(self, defaultValue): if self.integer: self.spinBox = QSpinBox() else: self.spinBox = QDoubleSpinBox() self.spinBox.setRange(0,10**5) self.spinBox.setValue(float(QSettings().value(self.settingsName, defaultValue))) self.spinBox.setToolTip('Default value: %s' % defaultValue) self.spinBox.setAlignment(Qt.AlignLeft|Qt.AlignTop) self.layout().addWidget(self.spinBox) def setEnabled(self, e): self.spinBox.setEnabled(e) def getValue(self): return self.spinBox.value() def setValue(self, newValue): self.spinBox.setValue(newValue) def setRange(self, min, max): self.spinBox.setRange(min, max)
class Double4(Double3): """ A 4 slider Line for 4d arrays (quaternion) """ def __init__(self, parent=None): super(Double4, self).__init__(parent) self.w = QDoubleSpinBox() self.layout().addWidget(self.w) self.w.valueChanged.connect(self.element_value_changed) def element_value_changed(self): self.valuesChanged.emit( [self.x.value(), self.y.value(), self.z.value(), self.w.value()]) def setValues(self, xyzw): x, y, z, w = xyzw self.x.setValue(x) self.y.setValue(y) self.z.setValue(z) self.z.setValue(w)
def testQRealSignal(self): foo1 = QDoubleSpinBox() effect = QGraphicsBlurEffect() effect.blurRadiusChanged["qreal"].connect(foo1.setValue) # check if qreal is a valid type effect.setBlurRadius(0.42) self.assertAlmostEqual(foo1.value(), effect.blurRadius())
class ProfileFormWidget(QWidget): ''' classdocs ''' def __init__(self): ''' Constructor ''' QWidget.__init__(self) self._initGUI() def _initGUI(self): self.layout = QVBoxLayout() self.form = QFormLayout() self.name = QLineEdit() self.surname = QLineEdit() self.birthdate = QCalendarWidget() self.birthdate.setGridVisible(True) self.birthdate.setMinimumDate(QDate(1850, 1, 1)) self.birthdate.setMaximumDate(QDate.currentDate()) self.male = QRadioButton("Male") self.male.setChecked(True) self.female = QRadioButton("Female") self.height = QDoubleSpinBox() self.height.setMaximum(250) self.height.setMinimum(50) self.height.setValue(165) self.height.setSuffix(" cm") self.mass = QDoubleSpinBox() self.mass.setMaximum(300) self.mass.setMinimum(20) self.mass.setValue(60) self.mass.setSuffix(" Kg") btnLayout = QVBoxLayout() self.form.addRow("Name", self.name) self.form.addRow("Surname", self.surname) self.form.addRow("Birth date", self.birthdate) sexLayout = QHBoxLayout() sexLayout.addWidget(self.male) sexLayout.addWidget(self.female) self.form.addRow("Sex", sexLayout) self.form.addRow("Height", self.height) self.form.addRow("Mass", self.mass) self.layout.addLayout(self.form) self.layout.addLayout(btnLayout) self.setLayout(self.layout) def getLayout(self): return self.layout def getWidget(self): widget = QWidget() widget.setLayout(self.layout) return widget def setProfile(self, athlete): self.name.setText(athlete._name) self.surname.setText(athlete._surname) self.birthdate.setSelectedDate(athlete._birthDate) if athlete._sex == "Male": self.male.setChecked(True) else: self.female.setChecked(True) self.height.setValue(athlete._height) self.mass.setValue(athlete._mass) def getProfile(self): qDate = self.birthdate.selectedDate() birthDate = self.qDate_to_date(qDate) athleteProfile = Athlete(self.name.text(), self.surname.text(), self._getSex(), birthDate, self.height.value(), self.mass.value()) return athleteProfile def qDate_to_date(self, qDate): return date(qDate.year(), qDate.month(), qDate.day()) def _getSex(self): if (self.male.isChecked()): return "Male" elif (self.female.isChecked()): return "Female" else: print "Error: No sex selected" return False
class Layer(object): def __init__(self): super(Layer, self).__init__() self.orientation = Quaternion() self.picked = None self.show = QCheckBox() self.show.setChecked(True) self.alpha_slider = QSlider(QtCore.Qt.Orientation.Horizontal) self.alpha_slider.setRange(0, 1024) self.alpha_slider.setValue(1024) self.alpha_number = QDoubleSpinBox() self.alpha_number.setDecimals(3) self.alpha_number.setSingleStep(0.01) self.alpha_number.setRange(0, 1) self.alpha_number.setValue(1) self.alpha_slider.valueChanged.connect(self._alphaSliderChanged) self.alpha_number.valueChanged.connect(self._alphaNumberChanged) self.move = QCheckBox() self.move.setChecked(True) self.quat = QLineEdit() font = QFont('monospace') font.setStyleHint(QFont.TypeWriter) self.quat.setFont(font) default_quat = '+0.000, +1.000, +0.000, +0.000' margins = self.quat.textMargins() self.quat.setFixedWidth( # HACK -------------------------------------------v QFontMetrics(self.quat.font()).width(default_quat + ' ') + margins.left() + margins.right() ) self.quat.setInputMask('#0.000, #0.000, #0.000, #0.000') self.quat.setMaxLength(30) self.quat.setText(default_quat) self.quat.editingFinished.connect(self._orientationChanged) self.nbytes = QLabel() self.nbytes.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.nbytes.setText('0') self.label = QLabel() self.label.setText('<empty>') def multiplyOrientation(self, quat): self.setOrientation(quat * self.orientation) def setOrientation(self, quat): self.orientation = quat self.quat.setText( '%+1.3f, %+1.3f, %+1.3f, %+1.3f' % ( self.orientation.w, self.orientation.x, self.orientation.y, self.orientation.z, ) ) def _orientationChanged(self): text = self.quat.text() def alpha(self): return self.alpha_number.value() if self.show.isChecked() else 0.0 def _alphaSliderChanged(self): self.alpha_number.setValue(self.alpha_slider.value() / 1024.0) def _alphaNumberChanged(self): self.alpha_slider.setValue(1024 * self.alpha_number.value()) def setup_ui(self, table, row): widgets = [ None, CenterH(self.show), self.alpha_slider, self.alpha_number, CenterH(self.move), self.quat, self.nbytes, self.label, ] for (column, widget) in enumerate(widgets): if widget is not None: table.setCellWidget(row, column, widget) def load_file(self, file_name, in_format): self.sphere = proj.load_sphere(file_name, projection=in_format) in_format = self.sphere.__class__ print('Loaded input %s from %s.' % (in_format.__name__, file_name)) self.texture_id = glGenTextures(1) self.sphere.to_gl(self.texture_id) self.shader = Shader( vert=VERTEX_SHADER, frag=FRAGMENT_SHADER + self.sphere.get_glsl_sampler(), ) self.label.setText(file_name) self.nbytes.setText(read_bsize(self.sphere.array.nbytes))
class ProfileFormWidget(QWidget): ''' classdocs ''' def __init__(self): ''' Constructor ''' QWidget.__init__(self) self._initGUI() def _initGUI(self): self.layout = QVBoxLayout() self.form = QFormLayout() self.name = QLineEdit() self.surname = QLineEdit() self.birthdate = QCalendarWidget() self.birthdate.setGridVisible(True) self.birthdate.setMinimumDate(QDate(1850,1,1)) self.birthdate.setMaximumDate(QDate.currentDate()) self.male = QRadioButton("Male") self.male.setChecked(True) self.female = QRadioButton("Female") self.height = QDoubleSpinBox() self.height.setMaximum(250) self.height.setMinimum(50) self.height.setValue(165) self.height.setSuffix(" cm") self.mass = QDoubleSpinBox() self.mass.setMaximum(300) self.mass.setMinimum(20) self.mass.setValue(60) self.mass.setSuffix(" Kg") btnLayout = QVBoxLayout() self.form.addRow("Name", self.name) self.form.addRow("Surname", self.surname) self.form.addRow("Birth date",self.birthdate) sexLayout = QHBoxLayout() sexLayout.addWidget(self.male) sexLayout.addWidget(self.female) self.form.addRow("Sex", sexLayout) self.form.addRow("Height", self.height) self.form.addRow("Mass", self.mass) self.layout.addLayout(self.form) self.layout.addLayout(btnLayout) self.setLayout(self.layout) def getLayout(self): return self.layout def getWidget(self): widget = QWidget() widget.setLayout(self.layout) return widget def setProfile(self, athlete): self.name.setText(athlete._name) self.surname.setText(athlete._surname) self.birthdate.setSelectedDate(athlete._birthDate) if athlete._sex=="Male": self.male.setChecked(True) else: self.female.setChecked(True) self.height.setValue(athlete._height) self.mass.setValue(athlete._mass) def getProfile(self): qDate = self.birthdate.selectedDate() birthDate = self.qDate_to_date(qDate) athleteProfile = Athlete(self.name.text(), self.surname.text(), self._getSex(), birthDate, self.height.value(), self.mass.value()) return athleteProfile def qDate_to_date(self, qDate): return date(qDate.year(), qDate.month(),qDate.day()) def _getSex(self): if (self.male.isChecked()): return "Male" elif (self.female.isChecked()): return "Female" else : print "Error: No sex selected" return False
class SliderFloatWidget(QWidget): """ SliderFloatWidget """ valueChanged = Signal(int) def __init__(self): super(SliderFloatWidget, self).__init__() self.label = QLabel() self.slider = QSlider(Qt.Horizontal) self.spinbox = QDoubleSpinBox() self.slider.valueChanged.connect(self.changedValueFromSlider) self.spinbox.valueChanged.connect(self.changedValueFromSpinBox) layout = QGridLayout() layout.setContentsMargins(0, 0, 0, 0) layout.setVerticalSpacing(0) # layout.setHorizontalSpacing(0) layout.addWidget(self.label, 0, 0) layout.addWidget(self.slider, 0, 1) layout.addWidget(self.spinbox, 0, 2) self.setLayout(layout) def setName(self, name): """ Set the name for the slider """ self.label.setText(name) def setRange(self, range): """ Set the range for the value """ self.range = range self.slider.setMinimum(0) self.slider.setMaximum(100) self.spinbox.setRange(self.range[0], self.range[1]) diff = self.range[1] - self.range[0] if diff <= 1: self.spinbox.setSingleStep(0.1) def setValue(self, value): """ Set the value for the slider and the spinbox """ ratio = (value - self.range[0]) / (self.range[1] - self.range[0]) self.slider.setValue(ratio * 100) self.spinbox.setValue(value) def value(self): return self.spinbox.value() @Slot(int) def changedValueFromSlider(self, value): ratio = value / 100.0 val = self.range[0] + ratio * (self.range[1] - self.range[0]) self.spinbox.setValue(val) self.valueChanged.emit(val) @Slot(float) def changedValueFromSpinBox(self, value): ratio = (value - self.range[0]) / (self.range[1] - self.range[0]) self.slider.setValue(ratio * 100) self.valueChanged.emit(value)
class SliderFloatWidget(QWidget): """ SliderFloatWidget """ valueChanged = Signal(int) def __init__(self): super(SliderFloatWidget, self).__init__() self.label = QLabel() self.slider = QSlider(Qt.Horizontal) self.spinbox = QDoubleSpinBox() self.slider.valueChanged.connect(self.changedValueFromSlider) self.spinbox.valueChanged.connect(self.changedValueFromSpinBox) # Keep track of whether one of the values was changed # By setting the value of the slider and the spinbox, valueChanged # events are fired. These events have to be ignored self._changed = False layout = QGridLayout() layout.setContentsMargins(0, 0, 0, 0) layout.setVerticalSpacing(0) layout.addWidget(self.label, 0, 0) layout.addWidget(self.slider, 0, 1) layout.addWidget(self.spinbox, 0, 2) self.setLayout(layout) def setName(self, name): """ Set the name for the slider """ self.label.setText(name) def setRange(self, range): """ Set the range for the value """ self.range = range self.slider.setMinimum(0.0) self.slider.setMaximum(100.0) self.spinbox.setRange(self.range[0], self.range[1]) diff = self.range[1] - self.range[0] if diff <= 1: self.spinbox.setSingleStep(0.01) def setValue(self, value): """ Set the value for the slider and the spinbox """ ratio = (value - self.range[0]) / (self.range[1] - self.range[0]) self._changed = False self.slider.setValue(ratio * 100) self._changed = False self.spinbox.setValue(value) self._changed = False def value(self): return self.spinbox.value() @Slot(int) def changedValueFromSlider(self, value): if self._changed: self._changed = False return ratio = value / 100.0 val = self.range[0] + ratio * (self.range[1] - self.range[0]) self._changed = True self.spinbox.setValue(val) self.valueChanged.emit(val) @Slot(float) def changedValueFromSpinBox(self, value): if self._changed: self._changed = False return ratio = (value - self.range[0]) / (self.range[1] - self.range[0]) self._changed = True self.slider.setValue(ratio * 100.0) self.valueChanged.emit(value)