Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from PyQt5 import QtCore, QtGui, QtWidgets as QW
- import os#для работы с каталогами
- #класс, отображающий дерево каталогов системы
- class Tree_View(QW.QTreeView):
- def __init__(self, parent = None):
- QW.QTreeView.__init__(self, parent)
- #устанавливаем модель
- self.model = QtGui.QStandardItemModel(self)
- self.setModel(self.model)
- self.model.setHorizontalHeaderLabels(['Дерево'])
- path = r'/home/Krep_Kospit/PycharmProjects/' # примем это за исходный путь
- self.tree = QtGui.QStandardItem('tree')
- self.model.appendRow(self.tree)
- self.create_tree(path, self.tree)#этим методом, с помощью рекурсии, строим дерево каталогов и подкаталогов
- def create_tree(self, path, root):
- try:
- if os.path.isdir(path):#если это каталог
- if os.listdir(path):#если внутри имеются подкаталоги
- item = QtGui.QStandardItem(path)
- root.appendRow(item)#добавим новую строку
- for sub in os.listdir(path):#переберём подкаталоги
- self.create_tree(os.path.join(path, sub), item)#отправим их на проверку на наличием своих подкаталогов
- else:
- item = QtGui.QStandardItem(path)#если нет подкаталогов...
- root.appendRow(item)#просто добавим строку
- except:
- print('None')
- #если запускаем как самостоятельный модуль
- if __name__ == '__main__':
- import sys
- app = QW.QApplication(sys.argv)
- TreeViewWindow = Tree_View()
- TreeViewWindow.setMinimumSize(800,00)
- TreeViewWindow.show()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement