Python PyQt and Psycopg2 with TableWidget



我试图将查询中的数据添加到pyqt中的表小部件中,但我很难将所有行放入其中。现在我的代码只返回第一列和第三列中的数据!真的需要一些帮助!共有5列7055行

我的代码:

import psycopg2
from PyQt4 import QtCore, QtGui
def populate(self):
con = psycopg2.connect("dbname=postgres user=username host=servername password=passowrd")
cur = con.cursor()
cur.execute("""SELECT * FROM doarni.bins_v2""")
data = cur.fetchall()
a = len(data) #rows
b =  len(data[0]) #columns
self.ui.tableWidget.setSortingEnabled(True)
self.ui.tableWidget.setRowCount(a)
self.ui.tableWidget.setColumnCount(b)
self.ui.tableWidget.setHorizontalHeaderLabels(['column1', 'column2', 'column3', 'column4', 'column5'])
i = 1 #row
j = 0 #column
for j in range(a):
    for i in range(b):
        item = QtGui.QTableWidgetItem(data[j][i])
        self.ui.tableWidget.setItem(j, i, item)
self.ui.tableWidget.sortByColumn(0, QtCore.Qt.DescendingOrder)

试试这个代码,它也被配置为显示Unicode字符串:

rows = cur.fetchall()
self.tableWidget.setRowCount(len(rows))
qs=QtCore.QString()
r=0
for row in rows:
    r=r+1
    col= 0
    for itm in row:
        if type(itm)==type('a'):
           item = qs.fromUtf8(itm, size=-1)
           qs=QtCore.QString()
        else:
            item = str(itm)
        self.tableWidget.setItem(r, col, QtGui.QTableWidgetItem(item))
        col = col+1

最新更新