Bonjour à tous,
J'ai quelques problèmes de renommage et de suppression avec le code ci-dessous.
Pour information le répertoire "D:/test" contient un sous répertoire nommé "MyFolder" qui contient un fichier nommé "MyFile".

Si je déploie le repertoire "MyFolder", que je le renomme et qu'après je supprime le fichier "MyFile" alors le message suivant apparait :
QFileSystemWatcher: failed to add paths: D:/test/MyFolder

Le fichier est apparait toujours dans le treeView mais si je regarde via l'explorer de Windows, il n'existe plus.

j'utilise python 2.6.0 et PyQt 4.5.4 sous Windows mais le problème se produit aussi sous Unix avec Python 2.7.1, Qt 4.5.2 et PyQt 4.8.2.

Merci pour le coup de main

Jean

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#=========================================================== 
 
import sys
from PyQt4 import QtGui, QtCore
 
class testExplo(QtCore.QObject):
 
    def __init__(self):
        QtCore.QObject.__init__(self)
 
        self.myTreeView = QtGui.QTreeView()
        self.myTreeView.keyPressEvent = self.keyPressEvent
        #-- Model
        self.myModel = QtGui.QFileSystemModel()
        self.myModel.setReadOnly(False)
        self.myModel.setRootPath(r"D:\test")
 
        #-- treeview
        self.myTreeView.setModel(self.myModel)
 
        rootModelIndex = self.myModel.index(r"D:\test")
        self.myTreeView.setRootIndex(rootModelIndex)
 
        QtCore.QObject.connect(self.myModel,
                              QtCore.SIGNAL("fileRenamed ( const QString, const
 
QString , const QString)  "),
                              self.printRenamed)
 
        self.myTreeView.show()
 
 
 
    def printRenamed(self, path, oldName, newName):
        print path, oldName, newName
        self.myModel.revert()
 
 
 
    def keyPressEvent(self,event):
        oModelIndex = self.myTreeView.selectedIndexes()[0]
        if event.key() == QtCore.Qt.Key_Delete:
            self.myModel.remove(oModelIndex)
            event.accept()
            QtGui.QTreeView.keyPressEvent(self.myTreeView, event)
 
try:
    app = QtGui.QApplication(sys.argv)
    myExplo = testExplo()
    end = app.exec_()
except Exception, inst :
    print inst
 
#===========================================================