gpt4 book ai didi

python - 使用 QAbstractTableModel 在 pyqt 中编辑表

转载 作者:太空狗 更新时间:2023-10-29 21:53:29 27 4
gpt4 key购买 nike

我正在尝试在 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()

如果我实现方法 setDataflags,所有项目甚至都无法选择...使表可编辑的解决方案是什么?谢谢

最佳答案

我刚刚找到了解决方案,在标志方法中需要返回值 QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable

关于python - 使用 QAbstractTableModel 在 pyqt 中编辑表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11736560/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com