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

Posted

技术标签:

【中文标题】Python QTableView:如何在列中插入项目【英文标题】:Python QTableView : how to insert items in the columns 【发布时间】:2014-03-01 21:56:07 【问题描述】:

我是 Python 和 Qt 的初学者,所以我相信我的问题的解决方案对你来说真的很容易,但它仍然对我有很大帮助。

我正在使用存储 last_name 和 first_name 的数据库。我可以访问这些信息,但我无法使用 QStdarItem 将它们插入到 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 |梅尔科尔 | .......... |

| 3 |杜布瓦 | .......... |

因此,我的问题是:我不知道如何在第二列中显示每个人的名字。 我知道我可以通过 d[1] 获得每个“d”(来自数据)的名字,但我不知道如何将它放在第二列。有人可以帮帮我吗?

【问题讨论】:

【参考方案1】:

appendRow 方法可以采用单个 QStandardItem 或它们的列表。

所以你想要这样的东西:

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

【讨论】:

感谢您的 anwser ekhumo,它运行良好!

以上是关于Python QTableView:如何在列中插入项目的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Spark 数据框中的 lit 在列中插入值?

在列中插入默认值(访问数据库)

在列中插入条件行

如何在代码中的sql表列中插入默认值

插入数据并在列中添加前一行数据

Python Pandas:如何在列中搜索字符串? [复制]