2017-04-13 69 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