Simple explorateur de Fichiers / sélecteur de fichier en Python programme avec Qt GUI?

Je suis en train d'essayer de mettre en œuvre une sorte de navigateur de fichiers /"explorer" dans un programme... je suis en utilisant Python et PySide en relation avec le Qt-fenêtre-boîte à outils. Plus ou moins ce youtube-vidéo montre le comportement que je veux avoir à la fin. Cependant, ce tutoriel utilisé le C++ comme langage de programmation et je n'ai pas pu encore à la raison le droit du code python à partir de l'exemple C++.

En gros, mon problème est d'obtenir la colonne de droite (voir le fichier) affiche le contenu du dossier d'un clic dans la colonne de gauche (arbre de style de l'affichage du dossier).

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PySide import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(600, 600)
self.fileBrowserWidget = QtGui.QWidget(self)
self.setCentralWidget(self.fileBrowserWidget)
self.dirmodel = QtGui.QFileSystemModel()
# Don't show files, just folders
self.dirmodel.setFilter(QtCore.QDir.NoDotAndDotDot | QtCore.QDir.AllDirs)
self.folder_view = QtGui.QTreeView(parent=self);
self.folder_view.setModel(self.dirmodel)
self.folder_view.clicked[QtCore.QModelIndex].connect(self.clicked)
# Don't show columns for size, file type, and last modified
self.folder_view.setHeaderHidden(True)
self.folder_view.hideColumn(1)
self.folder_view.hideColumn(2)
self.folder_view.hideColumn(3)
self.selectionModel = self.folder_view.selectionModel()
self.filemodel = QtGui.QFileSystemModel()
# Don't show folders, just files
self.filemodel.setFilter(QtCore.QDir.NoDotAndDotDot | QtCore.QDir.Files)
self.file_view = QtGui.QListView(parent=self);
self.file_view.setModel(self.filemodel)
splitter_filebrowser = QtGui.QSplitter()
splitter_filebrowser.addWidget(self.folder_view)
splitter_filebrowser.addWidget(self.file_view)
splitter_filebrowser.setStretchFactor(0,2)
splitter_filebrowser.setStretchFactor(1,4)
hbox = QtGui.QHBoxLayout(self.fileBrowserWidget)
hbox.addWidget(splitter_filebrowser)
def set_path(self):
self.dirmodel.setRootPath("")
def clicked(self, index):
# get selected path of folder_view
index = self.selectionModel.currentIndex()
dir_path = self.dirmodel.filePath(index)
###############################################
# Here's my problem: How do I set the dir_path
# for the file_view widget /the filemodel?
###############################################
self.filemodel.setRootPath(dir_path)
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
main.set_path()
sys.exit(app.exec_())

Comme vous pouvez le voir dans mon code, j'ai déjà essayé d'utiliser le setRootPath-fonction... cependant, ça ne semble pas être la bonne. Alors je me demande, ce que j'ai à faire pour obtenir que cela fonctionne?

OriginalL'auteur mozzbozz | 2012-02-12