2016-08-01 13 views
0

Ich versuche, Daten aus einer Abfrage zum Tabellenwidget in pyqt hinzufügen, aber ich habe Probleme, es alle Zeilen einzufügen. Im Moment gibt mein Code nur die erste und dritte Spalte mit Daten in Sie! Könnte wirklich etwas Hilfe dabei gebrauchen! gibt es insgesamt 5 Spalten und 7055 ZeilenPython PyQt und Psycopg2 mit TableWidget

Mein Code:

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) 

Antwort

-1

diesen Code versuchen, das so konfiguriert ist, auch Unicode-Strings zu zeigen:

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