मैं एक पांडा dataframe है कि मैं एक QtableView में मौजूद है और यह संपादन योग्य बनाने के लिए करना चाहते हैं की है। मैं नीचे मॉडल बनाने के है, लेकिन किसी कारण से उत्पादन हर क्षेत्र में चेक बॉक्स है। मैं उनसे पीछा कैसे छुड़ाऊं?
और यह इस मॉडल है कि पांडा dataframe एक qtavleview में दिखाया गया है बनाने के लिए और बनाने के लिए प्रयोग किया जाता है यह संपादन योग्य (मैं PySide उपयोग कर रहा हूँ)
class PandasModelEditable(QtCore.QAbstractTableModel):
def __init__(self, data, parent=None):
QtCore.QAbstractTableModel.__init__(self, parent)
self._data = data
def rowCount(self, parent=None):
return len(self._data.values)
def columnCount(self, parent=None):
return self._data.columns.size
def data(self, index, role=QtCore.Qt.DisplayRole):
if index.isValid():
if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole:
return unicode(self._data.iloc[index.row(), index.column()])
return unicode()
def headerData(self, section, orientation, role=QtCore.Qt.DisplayRole):
if role != QtCore.Qt.DisplayRole:
return None
if orientation == QtCore.Qt.Horizontal:
try:
return '%s' % unicode(self._data.columns.tolist()[section])
except (IndexError,):
return unicode()
elif orientation == QtCore.Qt.Vertical:
try:
return '%s' % unicode(self._data.index.tolist()[section])
except (IndexError,):
return unicode()
def flags(self, index):
return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable | \
QtCore.Qt.ItemIsEditable
def setData(self, index, value, role=QtCore.Qt.EditRole):
if index.isValid():
self._data.iloc[index.row(), index.column()] = value
if self.data(index, QtCore.Qt.DisplayRole) == value:
self.dataChanged.emit(index, index)
return True
return unicode()
निकाला जा रहा है QtCore.Qt.ItemIsSelectable
समस्या का समाधान नहीं है, क्योंकि यह किसी भी effet के लिए प्रतीत नहीं होता।