SetRootPath не работает должным образом

Я использовал часть кода (PyQt5) из этого post

from PyQt5.QtWidgets import QTreeView,QFileSystemModel,QApplication

class Main(QTreeView):
    def __init__(self):
        QTreeView.__init__(self)
        model = QFileSystemModel()
        model.setRootPath('C:\\')
        self.setModel(model)
        self.doubleClicked.connect(self.test)

    def test(self, signal):
        file_path=self.model().filePath(signal)
        print(file_path)


if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    w = Main()
    w.show()
    sys.exit(app.exec_())

И у меня проблема с этой строкой

model.setRootPath('C:\')

Когда я запускаю программу, она всегда показывает такие диски, как C: D: только не содержимое C: \ или даже если я набираю «C: \ Users \» или путь, который даже не существует, он всегда просто показывает, см. прикрепленное изображение, что я делаю не так?

Изображение программы PyQt с файловым менеджером

Я использую: Windows 10, PyCharm, Python 3.5, PyQt5,

Спасибо за вашу помощь.


person Jakob    schedule 02.04.2018    source источник


Ответы (1)


Вы должны указать QTreeView, какой у вас корневой элемент с setRootIndex():

from PyQt5.QtCore import QDir

from PyQt5.QtWidgets import QTreeView,QFileSystemModel,QApplication

class Main(QTreeView):
    def __init__(self):
        QTreeView.__init__(self)
        model = QFileSystemModel()
        self.setModel(model)
        model.setRootPath(QDir.rootPath())
        self.setRootIndex(model.index("C:"))
        self.doubleClicked.connect(self.test)

    def test(self, signal):
        file_path=self.model().filePath(signal)
        print(file_path)


if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    w = Main()
    w.show()
    sys.exit(app.exec_())
person eyllanesc    schedule 02.04.2018