Question

I have the fololloiwng code anf my query work fine:

    ###initilize Objects
    self.dbObj = DbAbsLayer()
    self.tableObj = MaterialsTable(dict()) 

    ####making queries, one for count row, another for result row
    query = self.dbObj.session.query(MaterialsTable)
    rowCounter = self.dbObj.session.query(MaterialsTable)
    for attr , val in tmpDict.items():
        query = query.filter(getattr(MaterialsTable,attr).like("%%%s%%" % val)).all()
        rowCounter = rowCounter.filter(getattr(MaterialsTable,attr).like("%%%s%%" % val)).count()
    ##### commit my queries
    self.dbObj.session.commit()
    ####setting up my QtableWidget 
    searchFrameObject.tableWidget.setRowCount(rowCounter)
    searchFrameObject.tableWidget.setColumnCount(5)
    ######inserting into QtableWidget
    for row in range(rowCounter):
        for result in query:
            item = QtGui.QTableWidgetItem(_fromUtf8(result.name))
            item.setFlags(item.flags() ^ QtCore.Qt.ItemIsEnabled)
            searchFrameObject.tableWidget.setItem(row,0,item)

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

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


            item = QtGui.QTableWidgetItem(_fromUtf8(integerToPersian(result.stock)))
            item.setFlags(item.flags() ^ QtCore.Qt.ItemIsEnabled)
            searchFrameObject.tableWidget.setItem(row,3,item)
            print result.stock
            print integerToPersian(result.stock)
            item = QtGui.QTableWidgetItem(_fromUtf8(integerToPersian(result.minimum_bound)))
            item.setFlags(item.flags() ^ QtCore.Qt.ItemIsEnabled)
            searchFrameObject.tableWidget.setItem(row,4,item)
            print result.minimum_bound

In my loop i print result.stock and result.minimum.bound i can see everything that i have in DB can i see in PHPMyAdmin, But when i add to QTableWidget, i see added last result.

My question is , how can i add every result into QTableWidget?

Was it helpful?

Solution

This is what you doing wrong:

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

You write all results from query over the previous result in every row, so that is why you can see only last result.

Possible solution (assuming query is array):

for row in range(rowCounter):
    result = query[row]
    item = ....
    .....

that way every result contained in query will be written in one (new) row (5 columns). You need to check if your rowCounter is the same length like your query (it should be if you want to show one result per row)

If you still do not understand what is wrong, feel free to ask :)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top