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表中。我使用的一些列表可能非常大,我不想单独添加列表中的每个元素。
答案 0 :(得分:0)
您真的不需要mylist
这是一个包含以下数字的列表。您可以zip
使用names
和list(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
会在最短列表中停止。