【问题标题】:SetRootPath doesn't set work as expectedSetRootPath 未按预期设置工作
【发布时间】:2018-09-12 00:24:28
【问题描述】:

我使用了这个post的部分代码(PyQt5)

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 程序图像

我正在使用: 视窗 10, PyCharm, 蟒蛇3.5, PyQt5,

感谢您的帮助。

【问题讨论】:

    标签: python pyqt pyqt5 qtreeview qfilesystemmodel


    【解决方案1】:

    您必须用setRootIndex()QTreeView 指明您的根项目是什么:

    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_())
    

    【讨论】:

      猜你喜欢
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-03
      • 2016-01-15
      相关资源
      最近更新 更多