का उपयोग कर pyqt में तालिका संपादित करें मैं PyQt में एक संपादन योग्य तालिका बनाने की कोशिश कर रहा हूं। यहां केवल तालिका प्रदर्शित करने के लिए कोड है:QAbstractTableModel
import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import *
from PyQt4.QtGui import *
# données à représenter
my_array = [['00','01','02'],
['10','11','12'],
['20','21','22']]
def main():
app = QApplication(sys.argv)
w = MyWindow()
w.show()
sys.exit(app.exec_())
# création de la vue et du conteneur
class MyWindow(QWidget):
def __init__(self, *args):
QWidget.__init__(self, *args)
tablemodel = MyTableModel(my_array, self)
tableview = QTableView()
tableview.setModel(tablemodel)
layout = QVBoxLayout(self)
layout.addWidget(tableview)
self.setLayout(layout)
# création du modèle
class MyTableModel(QAbstractTableModel):
def __init__(self, datain, parent = None, *args):
QAbstractTableModel.__init__(self, parent, *args)
self.arraydata = datain
def rowCount(self, parent):
return len(self.arraydata)
def columnCount(self, parent):
return len(self.arraydata[0])
def data(self, index, role):
if not index.isValid():
return None
elif role != Qt.DisplayRole:
return None
return (self.arraydata[index.row()][index.column()])
"""
def setData(self, index, value):
self.arraydata[index.row()][index.column()] = value
return True
def flags(self, index):
return Qt.ItemIsEditable
"""
if __name__ == "__main__":
main()
अगर मैं विधि setData
और flags
लागू सभी आइटम भी चयन नहीं कर रहे हैं, ... था तालिका संपादन योग्य बनाने का हल क्या है? धन्यवाद
यह काम करता है वापस जाने के लिए की जरूरत है। आप 'ItemIsEditable' ध्वज के साथ पहले से मौजूद मौजूदा झंडे भी कर सकते हैं:' QtCore.QAbstractTableModel.flags (स्वयं, अनुक्रमणिका) | QtCore.Qt.ItemIsEditable' – neuronet
मैंने आपके कोड की कोशिश की। काम करने के लिए, मुझे ** def setData (self, index, value) ** को ** def setData (self, index, value, role) ** –