Compare commits

...

2 Commits

Author SHA1 Message Date
80770d4f1c add decription for task 2023-10-18 11:00:50 +03:00
5adde406d1 add search filter using QlineEdit line 2023-10-18 10:22:48 +03:00
2 changed files with 44 additions and 23 deletions

View File

@ -1,32 +1,39 @@
# What is this?
Test program (TreeView - File Manager) from Astra Linux
Test program (Dir TreeView - File Manager) from Astra Linux.
- I used **2.12 Astra Linux** and **pyqt5** in Visual Studio Code.
- To use import **QtWidgets, QtCore** from pyqt5 (supports on pyqt6) and **sys**.
- In the name filter line you can write the folder or file and it'll be highlighted it
![Dir Tree View]()
# Tasks
В продолжении телефонного разговора направляю Вам тестовое задание, жду от Вас ответа 18.10 во второй половине дня.
### Установить Astra Linux (2.12 или 1.7) на виртуальную машину
- [x] Установить Astra Linux (2.12 или 1.7) на виртуальную машину\
- Выбрала 2.12
- В качестве комплектов пакетов в том числе были выбраны "средства визуализации" и "разработка и отладка", так что дополнительно не понадобилось ставить библиотеки для Python или использовать venv.
- Было создано 2 пользователя Test и User для тестирования программы
- [x] Обновиться до последней версии
- Через [официальный сайт(wiki)](https://wiki.astralinux.ru/pages/viewpage.action?pageId=158605543) посмотрела версии на 2.12
- Посмотрела версию астры через графику
- Версия актуальная
Yes
- [x] Необходимо реализовать графическое приложение, которое будет отображать дерево файловой системы
- [x] Сделать стартовой директорией домашнюю директорию текущего пользователя. То есть того пользователя что запускает утилиту (```path = QtCore.QDir.homePath()```)
- [x] Отображать файлы, папки, в том числе и скрытые ( ```... | QtCore.QDir.Hidden```)
- [x] Добавить QLineEdit виджет, который использовать для фильтрации по имёнам файлов и папок
### Обновиться до последней версии
- посмотрела через сайт версии на 2.12 https://wiki.astralinux.ru/pages/viewpage.action?pageId=158605543
- посмотрела версию астры через графику
- актуальная
### Необходимо реализовать графическое приложение, которое будет отображать дерево файловой системы
#### Сделать стартовой директорией домашнюю директорию текущего пользователя. То есть того пользователя что запускает утилиту
Yes
#### Отображать файлы, папки, в том числе и скрытые
Yes
#### Добавить QLineEdit виджет, который использовать для фильтрации по имёнам файлов и папок
-
#### Пришлите готовый код и скриншот. Желательно ссылку на репозиторий GitHub/GitLab/BitBucket
- [ ] Пришлите готовый код и скриншот. Желательно ссылку на репозиторий GitHub/GitLab/BitBucket
This
# Docs
[QFileSystemModel Class](https://doc.qt.io/qt-5/qfilesystemmodel.html)
[QTreeView](https://doc.qt.io/qt-5/qtreeview.html)
Here you can find some documentation that i used for this task:
[Dir View](https://doc.qt.io/qt-5/qtwidgets-itemviews-dirview-example.html)
[QFileSystemModel Class](https://doc.qt.io/qt-5/qfilesystemmodel.html) - QFileSystemModel Class documentation;\
[QTreeView](https://doc.qt.io/qt-5/qtreeview.html) - QTreeView Class documentation (default model/view implementation of a tree view);\
[Dir View](https://doc.qt.io/qt-5/qtwidgets-itemviews-dirview-example.html) - The Dir View example shows a tree view of the local file system; \
[QLIneEdit](https://www.pythontutorial.net/pyqt/pyqt-qlineedit/) - tutorial on how to use the PyQt QLineEdit widget to create a single-line text-entry widget;\
[QLineEdit Doc](https://doc.qt.io/qtforpython-5/PySide2/QtWidgets/QLineEdit.html) QLineEdit documentation;\
[Обучение PyQt](https://habr.com/ru/companies/skillfactory/articles/599599/) - tutorial on using PyQt

20
main.py
View File

@ -5,6 +5,10 @@ class Widget(QtWidgets.QWidget):
def __init__(self, *args, **kwargs):
super(Widget, self).__init__(*args, **kwargs)
self.filter_edit = QtWidgets.QLineEdit()
self.filter_edit.setPlaceholderText("Фильтр по именам")
self.filter_edit.setClearButtonEnabled(True) # Добавляем кнопку очистки
self.treeview = QtWidgets.QTreeView()
# делаем домашнюю папку пользователя - начальной
@ -21,15 +25,25 @@ class Widget(QtWidgets.QWidget):
self.treeview.setRootIndex(self.dirModel.index(path))
self.treeview.clicked.connect(self.on_clicked_item)
hlay = QtWidgets.QHBoxLayout(self)
hlay.addWidget(self.treeview)
# Устанавливаем размеры и расположение виджетов
а = QtWidgets.QVBoxLayout(self)
а.addWidget(self.filter_edit)
а.addWidget(self.treeview)
# Подключаем событие изменения текста в QLineEdit к обновлению фильтра
self.filter_edit.textChanged.connect(self.update_filter)
def update_filter(self):
text = self.filter_edit.text()
self.dirModel.setNameFilters([text]) # Устанавливаем фильтр по имени
# функция обработки кликов
def on_clicked_item(self, index):
path = self.dirModel.filePath(index)
# print(f"Selected: {path}")
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.setWindowTitle("Dir Tree View")
w.show()
sys.exit(app.exec_())