2012-01-08 1153 views
9

我是PyQt的新手,无论如何仍然有点困惑。我有一个文本文件的结构是这样的:Python - PyQt - QTable Widget - 添加行

  • 名姓电话电子邮件

哪里空间实际上是制表符“\ t”的现在,当我看到这个文件白衣我的方法,我想填充QTable控件。

我QTable部件有4列,分别为NameSurnameTelephoneEmail现在它已经没有行,但我从文件中读取的线条和分裂的制表每一行我想添加一个新行,在每一列都包含什么在线。

有人可能会指出我该如何去解决这个问题,因为我找不到QTable Widget提供的解决方案或方法,它可以让你做到这一点。

回答

14

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

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实例。

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

+0

感谢您的帮助。我改变了我的gui应用程序,在这里我的方法按行读取文件,并像往常一样将行添加到列表中。非常感谢。 – 2012-01-08 15:56:40

+0

对于一些像我这样的Python初学者:我相信要使用QTableWidgetItem,你必须从PyQt4(从PyQt4导入QtCore,QyGui)导入QtGui,并单独使用QtGui.QTableWidgetItem而不是QTableWidgetItem。 – 2015-03-13 16:09:25