我试图将查询中的数据添加到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)
答案 0 :(得分:-1)
尝试此代码,该代码也配置为显示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