自动生成pyqt4表

时间:2017-04-13 18:39:56

标签: python python-2.7 pyqt pyqt4

from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
import sys
names= ['Patrick', 'Kyle', 'John', 'Martin', 'Frank', 'Paul', 'Sarah', 
'Josh', 'Cian', 'Eamonn'] 
mylist = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9  , 10 ]
def main():  

    app     = QApplication(sys.argv)
    table   = QTableWidget()
    tableItem   = QTableWidgetItem()

    # initiate table
    table.setWindowTitle("QTableWidget Example @pythonspot.com")
    table.resize(400, 250)
    table.setRowCount(4)
    table.setColumnCount(2) 

    #table.setHorizontalHeaderLabels(QString("Names;Number;").split(";"))
    #table.setVerticalHeaderLabels(QString("L1;L2;L3;L4").split(";"))

    # set data
    table.setItem(0,0, QTableWidgetItem(names[0]))
    table.setItem(0,1, QTableWidgetItem(str(mylist[0])))
    table.setItem(1,0, QTableWidgetItem(names[1]))
    table.setItem(1,1, QTableWidgetItem(str(mylist[1])))
    table.setItem(2,0, QTableWidgetItem(names[2]))
    table.setItem(2,1, QTableWidgetItem(str(mylist[2])))
    table.setItem(3,0, QTableWidgetItem(names[3]))
    table.setItem(3,1, QTableWidgetItem(str(mylist[3])))

    # show table
    table.show()
    return app.exec_()


if __name__ == '__main__':
   main() 

这是我创建以下输出的代码。

输出截图

有没有人知道如何使用for循环将两个列表的每个元素添加到pyqt4表中。我使用的一些列表可能非常大,我不想单独添加列表中的每个元素。

1 个答案:

答案 0 :(得分:0)

您真的不需要mylist这是一个包含以下数字的列表。您可以zip使用nameslist(range(len(names)))或更好:使用enumerate循环,从1开始:

for i,name in enumerate(names,1):
    table.setItem(i,0, QTableWidgetItem(name))
    table.setItem(i,1, QTableWidgetItem(str(i)))

如果您需要放置除索引之外的其他内容(例如:您所说的电话号码),您可以尝试这种方法:

for phone_number,name in zip(mylist,names):
    table.setItem(i,0, QTableWidgetItem(name))
    table.setItem(i,1, QTableWidgetItem(str(phone_number)))

请注意,phone_number作为数字不能以0开头,所以对于整数列表来说,这可能不是一个很好的例子。

另请注意,zip会在最短列表中停止。