Compare commits
2 Commits
bdf5e304e6
...
80770d4f1c
Author | SHA1 | Date | |
---|---|---|---|
80770d4f1c | |||
5adde406d1 |
47
README.md
47
README.md
@ -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
20
main.py
@ -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_())
|
Loading…
Reference in New Issue
Block a user