2017-04-13 67 views
1
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() 

这是我的代码,它创建了以下输出。自动生成pyqt4表

输出的屏幕截图

有谁知道我可以用一个for循环的两个列表中的每个元素添加到PyQt4的表。我使用的一些列表可能非常大,我不想单独添加列表中的每个元素。

回答

0

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

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停在最短的列表中。

+0

好吧,看起来不错,谢谢。我的列表只是一个示例列表,它确实包含电话号码。 Didntn想要在这里张贴他们:) – dodger

+0

你可以把假想的电话号码。这将避免我发布'枚举'解决方案。看我的编辑。 –

+0

谢谢并表示歉意 – dodger