PyQt에서 편집 가능한 표를 만들려고합니다. 여기에 단지 테이블을 표시하기위한 코드이다 : 나는 방법 setData
및 flags
구현하는 경우QAbstractTableModel을 사용하여 pyqt의 표 편집
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()
모든 항목도 선택할 수 없습니다 ... 그쪽으로 표를 편집 할 수있는 솔루션은 무엇입니까? 감사
에게 반환해야 플래그에, 해결책을 찾았습니다. 또한'ItemIsEditable' 플래그로 이미 존재하는 플래그를 OR 할 수도 있습니다 :'QtCore.QAbstractTableModel.flags (self, index) | QtCore.Qt.ItemIsEditable' – neuronet
코드를 시도했습니다. ** set setData (self, index, value) ** ** def setData (self, index, value, role) ** **을 변경해야했습니다. ** –