2016-08-01 5 views
0

私は、pyqtのテーブルウィジェットにデータを追加しようとしていますが、すべての行を入れるのに問題があります。今すぐ私のコードは、それら!これで実際にいくつかの助けを使うことができました! 5列と7055行Python PyQtとPsycopg2 with TableWidget

私のコードの合計があります

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) 

答えて

-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