एक चेक करने योग्य निर्देशिका दृश्य बनाने के प्रयास में, मैंने निम्नलिखित कोड लिखा था। लेकिन चेकबल डिरमोडेल में जब भी कोई एक फ़ोल्डर की जांच करता है, तो उसे जांचने के लिए सभी उप-फ़ोल्डरों पर जाना पड़ता है और यह बहुत धीमा है। मैं उम्मीद कर रहा था कि कोई इस मुद्दे को हल करने में मेरी मदद कर सकता है।PyQt4 चेक करने योग्य निर्देशिका देखें
इस तरह इस एक अभी दिखता है। लेकिन यह धीमा है खासकर अगर कोई एक बड़ा फ़ोल्डर क्लिक करता है।
कोड निष्पादन योग्य है ...
from PyQt4 import QtGui, QtCore
class CheckableDirModel(QtGui.QDirModel):
def __init__(self, parent=None):
QtGui.QDirModel.__init__(self, None)
self.checks = {}
def data(self, index, role=QtCore.Qt.DisplayRole):
if role != QtCore.Qt.CheckStateRole:
return QtGui.QDirModel.data(self, index, role)
else:
if index.column() == 0:
return self.checkState(index)
def flags(self, index):
return QtGui.QDirModel.flags(self, index) | QtCore.Qt.ItemIsUserCheckable
def checkState(self, index):
if index in self.checks:
return self.checks[index]
else:
return QtCore.Qt.Unchecked
def setData(self, index, value, role):
if (role == QtCore.Qt.CheckStateRole and index.column() == 0):
self.checks[index] = value
for i in range(self.rowCount(index)):
self.setData(index.child(i,0),value,role)
return True
return QtGui.QDirModel.setData(self, index, value, role)
def exportChecked(self, acceptedSuffix=['jpg', 'png', 'bmp']):
selection=[]
for c in self.checks.keys():
if self.checks[c]==QtCore.Qt.Checked and self.fileInfo(c).completeSuffix().toLower() in acceptedSuffix:
try:
selection.append(self.filePath(c).toUtf8())
except:
pass
return selection
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
model = QtGui.QDirModel()
tree = QtGui.QTreeView()
tree.setModel(CheckableDirModel())
tree.setAnimated(False)
tree.setIndentation(20)
tree.setSortingEnabled(True)
tree.setWindowTitle("Dir View")
tree.resize(640, 480)
tree.show()
sys.exit(app.exec_())
आप कोड कर सकते हैं कि तुम क्या सुझाव दिया ... मैं इनाम – Kiarash
हो गया दर बढ़ाएंगे। यह काम तो ठीक करता है। –
वाह। वह वास्तव में तेज़ है! बहुत बहुत धन्यवाद। बस आखिरी बात, आप चेक किए गए आइटम सूची कैसे प्राप्त करेंगे? निर्यात के समान मूल कोड में चेक किया गया। – Kiarash