commit bdf5e304e686cc1a2b27310534497602862e3b5d Author: Yesen Date: Wed Oct 18 04:16:52 2023 +0300 first commit diff --git a/README.md b/README.md new file mode 100755 index 0000000..b09bc14 --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +# What is this? +Test program (TreeView - File Manager) from Astra Linux + +# Tasks +В продолжении телефонного разговора направляю Вам тестовое задание, жду от Вас ответа 18.10 во второй половине дня. + +### Установить Astra Linux (2.12 или 1.7) на виртуальную машину + +Yes + +### Обновиться до последней версии +- посмотрела через сайт версии на 2.12 https://wiki.astralinux.ru/pages/viewpage.action?pageId=158605543 +- посмотрела версию астры через графику +- актуальная + +### Необходимо реализовать графическое приложение, которое будет отображать дерево файловой системы +#### Сделать стартовой директорией домашнюю директорию текущего пользователя. То есть того пользователя что запускает утилиту +Yes +#### Отображать файлы, папки, в том числе и скрытые +Yes + +#### Добавить QLineEdit виджет, который использовать для фильтрации по имёнам файлов и папок +- +#### Пришлите готовый код и скриншот. Желательно ссылку на репозиторий GitHub/GitLab/BitBucket +This + +# Docs +[QFileSystemModel Class](https://doc.qt.io/qt-5/qfilesystemmodel.html) + +[QTreeView](https://doc.qt.io/qt-5/qtreeview.html) + +[Dir View](https://doc.qt.io/qt-5/qtwidgets-itemviews-dirview-example.html) diff --git a/main.py b/main.py new file mode 100755 index 0000000..d47a641 --- /dev/null +++ b/main.py @@ -0,0 +1,35 @@ +import sys +from PyQt5 import QtWidgets, QtCore + +class Widget(QtWidgets.QWidget): + def __init__(self, *args, **kwargs): + super(Widget, self).__init__(*args, **kwargs) + + self.treeview = QtWidgets.QTreeView() + + # делаем домашнюю папку пользователя - начальной + path = QtCore.QDir.homePath() + + # dirModel + self.dirModel = QtWidgets.QFileSystemModel() + self.dirModel.setRootPath(path) + # QtCore.QDir.AllEntries - отображение всех файлов + # QtCore.QDir.NoDotAndDotDot - нет точки и двух точек + # QtCore.QDir.Hidden - скрытые файлы + self.dirModel.setFilter(QtCore.QDir.AllEntries | QtCore.QDir.NoDotAndDotDot | QtCore.QDir.Hidden) + self.treeview.setModel(self.dirModel) + self.treeview.setRootIndex(self.dirModel.index(path)) + self.treeview.clicked.connect(self.on_clicked_item) + + hlay = QtWidgets.QHBoxLayout(self) + hlay.addWidget(self.treeview) + + # функция обработки кликов + def on_clicked_item(self, index): + path = self.dirModel.filePath(index) + +if __name__ == '__main__': + app = QtWidgets.QApplication(sys.argv) + w = Widget() + w.show() + sys.exit(app.exec_()) \ No newline at end of file