Beispiel #1
0
class Slider():
    def update_offset(self, pos):
        offset = round(pos, 2)
        return offset

    def __init__(self, tool, text, tooltip, precision, minimal, maximal,
                 interval):
        self.tool = tool

        self.scale = precision

        self.name_label = QLabel(text)
        self.name_label.setAlignment(Qt.AlignLeft)

        if not tooltip == None:
            self.name_label.setToolTip(tooltip)

        self.offset_edit = QDoubleSpinBox()
        self.offset_edit.setRange(minimal, maximal)
        self.offset_edit.setSingleStep(precision)
        self.offset_edit.setDecimals(2)
        self.offset_edit.setAlignment(Qt.AlignRight)
        self.offset_edit.valueChanged.connect(
            lambda pos: self.slider.setSliderPosition(
                self.update_offset(pos) / self.scale))

        self.slider = QSlider(Qt.Horizontal)
        self.slider.setRange(minimal / self.scale, maximal)
        self.slider.setTickInterval(interval / self.scale)
        self.slider.setTickPosition(QSlider.TicksAbove)
        self.slider.valueChanged.connect(lambda pos: self.offset_edit.setValue(
            self.update_offset(pos * self.scale)))

        self.update_offset(0)
def createDoubleSpinBox():
    spinbox = QDoubleSpinBox()
    spinbox.setDecimals(3)
    spinbox.setValue(0.000)
    spinbox.setAlignment(Qt.AlignCenter)
    return spinbox
    def _gui(self):
        layout = QVBoxLayout()
        self.setLayout(layout)

        slider_layout = QHBoxLayout()
        layout.addLayout(slider_layout)

        slider = ClickSlider(self)
        slider.setOrientation(Qt.Horizontal)
        slider.valueChanged.connect(self._slider_changed)
        slider_layout.addWidget(slider)
        self.slider = slider

        max_time = QLabel(self)
        self.max_time = max_time
        max_time.setText('--:--')
        slider_layout.addWidget(max_time)

        form = QFormLayout()
        layout.addLayout(form)

        time = QTimeEdit(self)
        time.setDisplayFormat('mm:ss.zzz')
        time.setAlignment(Qt.AlignRight)
        time.timeChanged.connect(self._edit_time_changed)
        self.time = time
        form.addRow(QLabel('Time', self),time)

        speed = QDoubleSpinBox(self)
        speed.setMinimum(0.1)
        speed.setMaximum(2.0)
        speed.setSingleStep(0.1)
        speed.setValue(1)
        speed.setAlignment(Qt.AlignRight)
        self.speed = speed
        speed.valueChanged.connect(self._speed_changed)
        form.addRow(QLabel('Speed', self), speed)

        playback = QHBoxLayout()
        layout.addLayout(playback)

        back_fast = QToolButton(self)
        playback.addWidget(back_fast)
        abf = QAction('<<', back_fast)
        abf.setShortcut(QKeySequence(Qt.Key_F1))
        abf.triggered.connect(self.back_fast)
        back_fast.setDefaultAction(abf)

        back = QToolButton(self)
        playback.addWidget(back)
        ab = QAction('<', back)
        ab.setShortcut(QKeySequence(Qt.Key_F2))
        ab.triggered.connect(self.back)
        back.setDefaultAction(ab)

        play = QToolButton(self)
        playback.addWidget(play)
        self.play_button = play
        play.setCheckable(True)
        play.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
        ap = QAction('Play', play)
        ap.setShortcut(QKeySequence(Qt.Key_F5))
        ap.triggered.connect(self.play)
        play.setDefaultAction(ap)

        forward = QToolButton(self)
        playback.addWidget(forward)
        af = QAction('>', forward)
        af.setShortcut(QKeySequence(Qt.Key_F3))
        af.triggered.connect(self.forward)
        forward.setDefaultAction(af)

        forward_fast = QToolButton(self)
        playback.addWidget(forward_fast)
        aff = QAction('>>', forward_fast)
        aff.setShortcut(QKeySequence(Qt.Key_F4))
        aff.triggered.connect(self.forward_fast)
        forward_fast.setDefaultAction(aff)

        speed_up = QAction('Speed up', forward_fast)
        speed_up.setShortcut(QKeySequence(Qt.Key_F7))
        speed_up.triggered.connect(self.speed.stepUp)

        speed_down = QAction('Speed down', forward_fast)
        speed_down.setShortcut(QKeySequence(Qt.Key_F6))
        speed_down.triggered.connect(self.speed.stepDown)
        
        self.utils = [
            slider,
            back_fast,
            back,
            play,
            forward,
            forward_fast,
            time,
            speed
        ]
        self.playback_actions = [abf, ab, ap, af, aff, speed_down, speed_up]
        self.set_enabled_utils(False)

        self.prevent = False
        self.timer = QTimer(self)
        self.timer.timeout.connect(self._update)
        self.timer.start(1)
        self.player = None
Beispiel #4
0
    def _add_record_view(self, record: PatientBoneAgeRecord):
        row = self.rowCount()
        self.insertRow(row)
        self._records_rows[record] = row

        name = '' if record.image is None else record.image.path.stem
        name_item = QTableWidgetItem(name)
        name_item.setTextAlignment(Qt.AlignCenter)
        # Add the |record| reference to the |name_item|
        name_item.setData(TableItemDataRole.RECORD_REF, record)
        self.setItem(row, self.column_number(TableNameColumn), name_item)

        gender_widget = GenderWidget(embedded=True)
        gender_widget.man = record.male
        gender_widget.gender_changed.connect(
            partial(self._on_gender_changed, record))
        record.male_changed.connect(
            partial(self._on_record_male_changed, gender_widget))
        self.setCellWidget(row, self.column_number(TableGenderColumn),
                           gender_widget)

        birthdate_edit_widget = DateEditWidget(record.birthdate, embedded=True)
        birthdate_edit_widget.dateChanged.connect(
            partial(self._on_birthdate_changed, record))
        self.setCellWidget(row, self.column_number(TableBirthdateColumn),
                           birthdate_edit_widget)

        image_date_edit_widget = DateEditWidget(record.image_date,
                                                embedded=True)
        image_date_edit_widget.dateChanged.connect(
            partial(self._on_image_date_changed, record))
        self.setCellWidget(row, self.column_number(TableImageDateColumn),
                           image_date_edit_widget)

        age_in_image_item = QTableWidgetItem()
        age_in_image_item.setFlags(age_in_image_item.flags()
                                   & ~Qt.ItemIsEditable)
        age_in_image_item.setTextAlignment(Qt.AlignCenter)
        record.age_in_image_changed.connect(
            partial(self._set_age_to_table_item, age_in_image_item))
        self.setItem(row, self.column_number(TableAgeInImageColumn),
                     age_in_image_item)

        bone_age_item = QTableWidgetItem()
        bone_age_item.setFlags(bone_age_item.flags() & ~Qt.ItemIsEditable)
        record.bone_age_changed.connect(
            partial(self._set_age_to_table_item, bone_age_item))
        record.skeletal_development_rate_changed.connect(
            partial(self._on_skeletal_development_rate_changed, record))
        self.setItem(row, self.column_number(TableDenseNetBoneAgeColumn),
                     bone_age_item)
        self._update_bone_age_table_item_foreground(record)

        height_spin_box = QDoubleSpinBox()
        height_spin_box.setAlignment(Qt.AlignCenter)
        height_spin_box.setFrame(False)
        height_spin_box.setDecimals(1)
        height_spin_box.setMaximum(300)
        self._set_height_to_table_item_widget(height_spin_box, record.height)
        record.height_changed.connect(
            partial(self._set_height_to_table_item_widget, height_spin_box))
        height_spin_box.valueChanged.connect(
            partial(self._on_height_table_item_widget_value_changed, record))
        self.setCellWidget(row, self.column_number(TableHeightColumn),
                           height_spin_box)

        max_height_item = QTableWidgetItem()
        max_height_item.setFlags(max_height_item.flags() & ~Qt.ItemIsEditable)
        max_height_item.setTextAlignment(Qt.AlignCenter)
        self._set_max_height_to_table_item(max_height_item, record.max_height)
        record.max_height_changed.connect(
            partial(self._set_max_height_to_table_item, max_height_item))
        self.setItem(row, self.column_number(TableMaxHeightColumn),
                     max_height_item)

        self._update_age_column_contents_for_row(row)