def __init__(self, parent=None): super().__init__(parent) self.focus_policy = Qt.StrongFocus self.view_label = QLabel() self.view_label.style_sheet = 'QLabel { background-color : #313D4A; padding : 10px 10px 10px 10px; }' # 354A64 self.view_label.alignment = Qt.AlignCenter self.red_color = QColor(205, 65, 65) self.green_color = QColor(65, 205, 82) transf_widget_size = QSize(28, 12) self.translated_widget = ColoredWidget() self.rotated_widget = ColoredWidget() self.scaled_widget = ColoredWidget() self.translated_widget.set_fixed_size(transf_widget_size) self.rotated_widget.set_fixed_size(transf_widget_size) self.scaled_widget.set_fixed_size(transf_widget_size) self.translated_widget.tool_tip = 'translation was applied' self.rotated_widget.tool_tip = 'rotation was applied' self.scaled_widget.tool_tip = 'scaling was applied' self.translated_widget.brush = QBrush(self.green_color) self.rotated_widget.brush = QBrush(self.red_color) self.scaled_widget.brush = QBrush(self.green_color) transformation_layout = QHBoxLayout() transformation_layout.add_stretch() transformation_layout.add_widget(self.translated_widget) transformation_layout.add_widget(self.rotated_widget) transformation_layout.add_widget(self.scaled_widget) transformation_layout.add_stretch() self.info = QPlainTextEdit() font = self.info.font font.set_family('Courier New') # monospace self.info.font = font self.info.read_only = True self.info.line_wrap_mode = QPlainTextEdit.NoWrap layout = QVBoxLayout(self) layout.add_widget(QLabel('Image information')) layout.add_widget(self.view_label) layout.add_layout(transformation_layout) layout.add_widget(self.info) layout.contents_margins = QtCore.QMargins(0, 0, 0, 0)
def _setup_gui(self): # setup 3 widget model view : QTreeView - QListView - QListView self.dataset_tree_view, self.dataset_count_label, dataset_widget = self._setup_view_widget( QTreeView(), 'Dataset', self.dataset_model, self.select_dataset, -1) self.image_label_list_view, self.image_label_count_label, image_label_widget = self._setup_view_widget( QListView(), 'Label', self.label_model, self.select_label) self.image_list_view, self.image_count_label, image_widget = self._setup_view_widget( QListView(), 'Image', self.image_model, self.select_image) # configure QTreeView self.dataset_tree_view.header_hidden = False self.dataset_tree_view.horizontal_scroll_mode = QTreeView.ScrollPerPixel self.dataset_tree_view.horizontal_scroll_bar_policy = Qt.ScrollBarAsNeeded self.dataset_tree_view.selection_mode = QTreeView.SingleSelection self.dataset_tree_view.edit_triggers = QtWidgets.QAbstractItemView.NoEditTriggers # setup image view widget self.image_info_widget = KlustRImageInfoWidget() # layouting main widget view_widget = QWidget() view_layout = QHBoxLayout(view_widget) view_layout.add_widget(dataset_widget) view_layout.add_widget(image_label_widget) view_layout.add_widget(image_widget) view_splitter = QSplitter() view_splitter.orientation = Qt.Horizontal view_splitter.add_widget(view_widget) view_splitter.add_widget(self.image_info_widget) view_splitter.size_policy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.MinimumExpanding) # setup transformation filter widget self.filter_box = QGroupBox('Filter') self.filter_box.enabled = False self.translation_checkbox = QCheckBox('Translation') self.rotation_checkbox = QCheckBox('Rotation') self.scaling_checkbox = QCheckBox('Scaling') self.exclusive_checkbox = QCheckBox('Exclusive') self.translation_checkbox.checked = True self.rotation_checkbox.checked = True self.scaling_checkbox.checked = True self.exclusive_checkbox.checked = False # setup transformation filter widget filter_layout = QHBoxLayout(self.filter_box) filter_layout.add_widget(self.translation_checkbox) filter_layout.add_widget(self.rotation_checkbox) filter_layout.add_widget(self.scaling_checkbox) filter_layout.add_widget(self.exclusive_checkbox) filter_layout.add_stretch() # connect transformation filter widget self.translation_checkbox.stateChanged.connect(self._update_models) self.rotation_checkbox.stateChanged.connect(self._update_models) self.scaling_checkbox.stateChanged.connect(self._update_models) self.exclusive_checkbox.stateChanged.connect(self._update_models) # main layouting layout = QVBoxLayout(self) layout.add_widget(view_splitter) layout.add_widget(self.filter_box)