2023-10-18 04:16:52 +03:00
|
|
|
|
import sys
|
|
|
|
|
from PyQt5 import QtWidgets, QtCore
|
2024-10-08 11:55:46 +03:00
|
|
|
|
#test
|
2023-10-18 04:16:52 +03:00
|
|
|
|
class Widget(QtWidgets.QWidget):
|
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
|
super(Widget, self).__init__(*args, **kwargs)
|
|
|
|
|
|
2023-10-18 10:22:48 +03:00
|
|
|
|
self.filter_edit = QtWidgets.QLineEdit()
|
|
|
|
|
self.filter_edit.setPlaceholderText("Фильтр по именам")
|
|
|
|
|
self.filter_edit.setClearButtonEnabled(True) # Добавляем кнопку очистки
|
|
|
|
|
|
2023-10-18 04:16:52 +03:00
|
|
|
|
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)
|
|
|
|
|
|
2023-10-18 10:22:48 +03:00
|
|
|
|
# Устанавливаем размеры и расположение виджетов
|
|
|
|
|
а = 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]) # Устанавливаем фильтр по имени
|
2023-10-18 04:16:52 +03:00
|
|
|
|
|
|
|
|
|
def on_clicked_item(self, index):
|
|
|
|
|
path = self.dirModel.filePath(index)
|
2023-10-18 10:22:48 +03:00
|
|
|
|
# print(f"Selected: {path}")
|
2023-10-18 04:16:52 +03:00
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
app = QtWidgets.QApplication(sys.argv)
|
|
|
|
|
w = Widget()
|
2023-10-18 10:22:48 +03:00
|
|
|
|
w.setWindowTitle("Dir Tree View")
|
2023-10-18 04:16:52 +03:00
|
|
|
|
w.show()
|
|
|
|
|
sys.exit(app.exec_())
|