Python - PyQt - QTable 小部件 - 添加行

Posted

技术标签:

【中文标题】Python - PyQt - QTable 小部件 - 添加行【英文标题】:Python - PyQt - QTable Widget - adding rows 【发布时间】:2012-02-05 05:19:48 【问题描述】:

我是 PyQt 的新手,无论如何还是有点困惑。我有一个这样的文本文件结构:

姓名 姓氏 电话 电子邮件

现在,当我使用我的方法读取此文件时,空格实际上是制表符“ \t ”,我希望填充 QTable 小部件。

我的 QTable 小部件有 4 列,分别称为 NameSurnameTelephoneEmail 现在它没有行,但是当我从文件中读取行并通过制表符拆分每一行时,我希望添加一个新的每列中包含该行中的任何内容的行。

有人能告诉我如何去做吗,因为我找不到 QTable Widget 提供的解决方案或方法来让你这样做。

【问题讨论】:

【参考方案1】:

当你想填充QTableWidget时,你需要在插入数据example in documentation之前设置行数和列数(PySide文档比PyQt好)。而且您不能只将制表符分隔的文本字符串插入表格,您需要自己准备,然后通过调用QTableWidget.setItemQTableWidgetItem 填充表格。它看起来像这样:

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 文件,而 tableWidgetQTableWidget 实例。

在此示例文件中手动解析,但考虑使用标准 csv module 执行此任务。

【讨论】:

感谢您的帮助。我更改了我的 gui 应用程序,其中我的方法按行读取文件并将行附加到列表中。非常感谢。 对于像我这样的python初学者:我相信要使用QTableWidgetItem,您必须从PyQt4导入QtGui(从PyQt4导入QtCore,QyGui)并使用QtGui.QTableWidgetItem而不是单独使用QTableWidgetItem。

以上是关于Python - PyQt - QTable 小部件 - 添加行的主要内容,如果未能解决你的问题,请参考以下文章

PyQt,Qtable在启用排序时清除列

如何从 Qtable 中获取值

在qtable中打开csv文件时程序关闭

pyqt5 笔记实现http请求发送

PyQt QTabWidget 多角小部件

如何在 tableWidget PyQT 中添加一行?