Python QTableView:如何在列中插入项目

时间:2014-03-01 21:56:08

标签: python pyqt4 multiple-columns qtableview

我是Python和Qt的初学者,所以我确信我的问题的解决方案对您来说非常简单,但是,它仍然会对我有所帮助。

我使用的数据库中存储了last_name和first_name。我可以访问这些信息,但我无法使用QStandarItem将它们插入QTableView。

这是我的代码:

 cursor.execute("SELECT last_name, first_name FROM sakila.actor ORDER BY last_name ASC")
 data = cursor.fetchall()
 model = QStandardItemModel()
 model.setColumnCount(2)
 headerNames = []
 headerNames.append("Last Name")
 headerNames.append("First Name")
 model.setHorizontalHeaderLabels(headerNames)

 for d in data:
     # Create an item with information of the database
     item = QStandardItem(d[0])
     item.setEditable(False)
     model.appendRow(item)
 self.tableViewPatient.setModel(model)

所以我用以下方式进行查询:

cursor.execute("SELECT last_name, first_name FROM sakila.actor ORDER BY last_name ASC")
data = cursor.fetchall()

然后我用标题创建表:

model = QStandardItemModel()
model.setColumnCount(2)
headerNames = []
headerNames.append("Last Name")
headerNames.append("First Name")
model.setHorizontalHeaderLabels(headerNames)

然后为每个元组" Last_name"和" First_name"我只在表中放了Last_Name:

for d in data:
    # Create an item with information of the database
    item = QStandardItem(d[0])
    item.setEditable(False)
    model.appendRow(item)
self.tableViewPatient.setModel(model)

所以我得到一张如下所示的表格: (抱歉,我无法发布图片)


| 。 |姓氏|名字|

| 1 |杜邦| .......... |

| 2 | Melkor | .......... |

| 3 | Dubois | .......... |

我的问题是:我不知道如何在每个人的第二列中显示名字。 我知道我可以获得每个" d"的第一个名称。 (来自数据)做d [1]但我不知道如何把它放在第二列。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:3)

appendRow方法可以使用单个QStandardItem或其列表。

所以你想要这样的东西:

for d in data:
    row = []
    for name in d:
        item = QStandardItem(name)
        item.setEditable(False)
        row.append(item)
    model.appendRow(row)