class Explorer(object): ''' classdocs ''' def __init__(self): ''' Constructor ''' root = Container("Root") model = root.add(Model("Model")) test = model.add(Container("test")) cns = model.add(Model("Cns")) root2 = root.add(Container("Model 2")) leg = root2.add(Container("Leg")) bones = Model("Fk") leg.add(bones) bones.transform.scale.y.constrainer = cns.transform.scale.y cns.transform.scale = Vector(2, 3, 4) self.model = SceneGraphModel(root) self.view = QTreeView() self.view.setDragEnabled(True) self.view.setAcceptDrops(True) self.view.setDropIndicatorShown(True) self.view.setSelectionMode(QAbstractItemView.ExtendedSelection) self.view.setModel(self.model) self.objEditor = Obj3dEditor() self.objEditor.setModel(self.model) self.transformEditor = TransformEditor() self.transformEditor.setModel(self.model) self.view.selectionModel().currentChanged.connect(self.setSelection) self.view.setStyleSheet(""" .QTreeView { background-color:rgb(61, 63, 65); color: #bbb; font-size : 12px; } .QHeaderView::section { height: 20px; font-size : 12px; background-color: rgb(65, 74, 91); color: #bbb; border: 1px solid rgba(20, 24, 24,0); } """) def setSelection(self, current, old): self.objEditor.setSelection(current, old) self.transformEditor.setSelection(current, old) def show(self): self.view.show()
class Widget(QWidget): def __init__(self): super().__init__() path = QDir.rootPath() self.model = QFileSystemModel() self.model.setRootPath(path) self.tree_view = QTreeView() self.tree_view.setModel(self.model) self.tree_view.setSelectionMode(QTreeView.ExtendedSelection) self.tree_view.selectionModel().selectionChanged.connect( self._on_selection_changed) self.list_files = QListWidget() self.button_add = QPushButton('Добавить!') self.button_add.setEnabled(False) self.button_add.clicked.connect(self._on_add) splitter = QSplitter(Qt.Horizontal) splitter.addWidget(self.tree_view) splitter.addWidget(self.list_files) main_layout = QVBoxLayout(self) main_layout.addWidget(splitter) main_layout.addWidget(self.button_add) def _on_selection_changed(self, selected, deselected): has = self.tree_view.selectionModel().hasSelection() self.button_add.setEnabled(has) def _on_add(self): for row in self.tree_view.selectionModel().selectedRows(): path = self.model.filePath(row) self.list_files.addItem(path)