#!/usr/bin/env python # -*- coding: utf-8 -*- import psycopg2 import sys from PyQt4 import QtCore, QtGui con = None class MainWindow(QtGui.QWidget): updateSignal = QtCore.pyqtSignal() def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.table_widget = QtGui.QTableWidget() self.button = QtGui.QPushButton('Populate') self.button.clicked.connect(self.populate) layout = QtGui.QVBoxLayout() layout.addWidget(self.table_widget) layout.addWidget(self.button) self.setLayout(layout) self.updateSignal.connect(self.update_table) self.populate() def populate(self): con = psycopg2.connect(database='testdb', user='Arthur') cur = con.cursor() cur.execute('SELECT title,fname FROM customer') data = cur.fetchall() linhas = len(data) colunas = len(data[0]) i = 1 j = 0 self.table_widget.setSortingEnabled(False) self.table_widget.setRowCount(linhas) self.table_widget.setColumnCount(colunas) self.table_widget.setHorizontalHeaderLabels(['Titulo', 'Nome']) for i in range(linhas):#percorrer as linhas for j in range(colunas):#percorrer as colunas print j item = QtGui.QTableWidgetItem(data[i][j]) self.table_widget.setItem(i, j, item) self.updateSignal.emit() self.table_widget.setSortingEnabled(True) def update_table(self): self.table_widget.sortItems(0,QtCore.Qt.DescendingOrder) if __name__ == "__main__": app = QtGui.QApplication(sys.argv) wnd = MainWindow() wnd.resize(640, 480) wnd.show() sys.exit(app.exec_())