【问题标题】:Python PyQt and Psycopg2 with TableWidgetPython PyQt 和 Psycopg2 与 TableWidget
【发布时间】:2016-09-08 22:06:05
【问题描述】:

我正在尝试将查询中的数据添加到 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)

【问题讨论】:

    标签: python pyqt psycopg2 qtablewidget


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2012-08-09
      • 2014-07-25
      • 2020-03-17
      • 2021-03-29
      • 2011-12-09
      • 2019-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多