Python - PyQt - QTable Widget - 添加行

9
我是一名新手,对PyQt还有些困惑。我有一个文本文件的结构如下:
  • 姓名 姓氏 电话 邮箱
其中空格实际上是制表符“ \t ”。现在当我用自己的方法读取这个文件时,我希望能够填充QTable Widget。
我的QTable Widget有4列,分别称为姓名姓氏电话邮箱。它目前没有行,但当我从文件中读取每一行并用制表符分隔每一行时,我希望添加一个新行,其中每个列包含该行中的内容。
请问有人能指点我如何去做吗?因为我找不到解决方案或QTable Widget提供的方法来实现这一点。
1个回答

15
当你想要填充 QTableWidget 时,你需要在插入数据之前设置行和列的数量。具体示例可以参考文档(PySide文档比PyQt更好)。你不能只是将以制表符分隔的文本字符串插入到表格中,你需要自己准备好数据,然后通过调用QTableWidget.setItem来填充表格。代码如下:
entries = []
with open('data') as input:
    for line in input:
        entries.append(line.strip().split('\t'))

tableWidget.setRowCount(len(entries))
tableWidget.setColumnCount(len(entries[0]))

for i, row in enumerate(entries):
    for j, col in enumerate(row):
        item = QTableWidgetItem(col)
        tableWidget.setItem(i, j, item)

我假设您有一个包含条目的data文件,并且tableWidget是一个QTableWidget实例。

在这个手动解析的示例文件中,但考虑使用标准的csv模块来完成此任务。


谢谢你的帮助。我改变了我的GUI应用程序,让我的方法按行读取文件并像你一样将行附加到列表中。非常感谢。 - Sterling Duchess
对于像我这样的Python初学者:我相信要使用QTableWidgetItem,您必须从PyQt4中导入QtGui(from PyQt4 import QtCore,QtGui),并使用QtGui.QTableWidgetItem而不是仅使用QTableWidgetItem。 - Léo Muniz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接