Logical error in filling QTableWidget and filling all of nodes

131 views Asked by At

i have the following code (PyQt):

searchFrameObject.tableWidget.setRowCount(rowCounter)
searchFrameObject.tableWidget.setColumnCount(5)

for row in range(rowCounter):
    for column in range(5):
        for result in query:

            item = QtGui.QTableWidgetItem(_fromUtf8(result.name))
            item.setFlags(item.flags() ^ QtCore.Qt.ItemIsEnabled)
            searchFrameObject.tableWidget.setItem(row,column,item)

            #item = QtGui.QTableWidgetItem(String(result.bought_price))
            #item.setFlags(item.flags() ^ QtCore.Qt.ItemIsEnabled)
            #searchFrameObject.tableWidget.setItem(row,column+1,item)

            #item = QtGui.QTableWidgetItem(result.bought_date)
            #item.setFlags(item.flags() ^ QtCore.Qt.ItemIsEnabled)
            #searchFrameObject.tableWidget.setItem(row,column+2,item)

            item = QtGui.QTableWidgetItem(result.stock)
            item.setFlags(item.flags() ^ QtCore.Qt.ItemIsEnabled)
            searchFrameObject.tableWidget.setItem(row,column+3,item)

            item = QtGui.QTableWidgetItem(result.minimum_bound)
            item.setFlags(item.flags() ^ QtCore.Qt.ItemIsEnabled)
            searchFrameObject.tableWidget.setItem(row,column+4,item)

When i search in DB, i print result.name or print result.stock , everything is OK. But when i import them into QtableWidget i see just node result.name addeed to widgets. (all of nodes filled from result.name)

My Question is , How i fill rows and columns with my fields?

1

There are 1 answers

2
Bleeding Fingers On BEST ANSWER

Try commenting out the line for column in range(5): and set column to 0.

There seems to be no point in running that loop because you are manually incrementing the column number in which you want item to be added.

One more thing there is no point in running a loop over query because what appears in a particular row is what comes out last in query. Plus you are uselessly choking the memory by creating (len(query) - 1) * 5 items which could potentially be never used again. Better comment out for result in query: and replace it with result = list(query)[-1].