def __init__(self, parent=None, subfolders=False, status=None): QTreeView.__init__(self, parent) self._load = False # If True a loadFiles signal is emitted when # an index is clicked. See selectionChanged. dirmodel = QDirModel() dirmodel.setSorting(QDir.IgnoreCase) dirmodel.setFilter(QDir.Dirs | QDir.NoDotAndDotDot) dirmodel.setReadOnly(False) dirmodel.setLazyChildCount(False) dirmodel.setResolveSymlinks(False) header = PuddleHeader(Qt.Horizontal, self) self.setHeader(header) self.header().setSectionResizeMode(QHeaderView.ResizeToContents) self.setModel(dirmodel) [self.hideColumn(column) for column in range(1, 4)] self.header().hide() self.subfolders = subfolders self.setSelectionMode(self.ExtendedSelection) self._lastselection = 0 # If > 0 appends files. See selectionChanged self._load = True self.setDragEnabled(False) self.setAcceptDrops(True) self.setDropIndicatorShown(True) self._dropaction = Qt.MoveAction self._threadRunning = False self._select = True self.expanded.connect(lambda discarded: self.resizeColumnToContents(0))
class Demo(QWidget): def __init__(self): super(Demo, self).__init__() self.resize(600, 300) self.model = QDirModel(self) # 1 self.model.setReadOnly(False) self.model.setSorting(QDir.Name | QDir.IgnoreCase) self.tree = QTreeView(self) # 2 self.tree.setModel(self.model) self.tree.clicked.connect(self.show_info) self.index = self.model.index(QDir.currentPath()) self.tree.expand(self.index) self.tree.scrollTo(self.index) self.info_label = QLabel(self) # 3 self.v_layout = QVBoxLayout() self.v_layout.addWidget(self.tree) self.v_layout.addWidget(self.info_label) self.setLayout(self.v_layout) def show_info(self): # 4 index = self.tree.currentIndex() file_name = self.model.fileName(index) file_path = self.model.filePath(index) file_info = 'File Name: {}\nFile Path: {}'.format(file_name, file_path) self.info_label.setText(file_info)