代码之家  ›  专栏  ›  技术社区  ›  Jurisdiction

在PyQt4中使用QTableWidget显示sqlite数据库中的行

  •  0
  • Jurisdiction  · 技术社区  · 10 年前
        with sqlite3.connect('database.db') as db:
            cursor=db.cursor()
            cursor.execute('select* from Item Order BY Name ASC')
            title = [cn[0] for cn in cursor.description]
            rows = [cn[0] for cn in cursor.description]
            cur=cursor.fetchall()
    
    
            layout = QtGui.QGridLayout() 
            self.test = QtGui.QLineEdit('test') #This is just a test for printing text into the table and works fine.
    
            self.table = QtGui.QTableWidget()
    
            for rows in cur:
                print(rows[1]) #This is just a test to see if the data could be printed into python shell, which worked.
    
    
                #self.test2 = QtGui.QLineEdit(cur)
                #self.table.setVerticalHeaderLabels(rows)
    
            self.table.setRowCount(3)
            self.table.setColumnCount(5)
            self.table.setHorizontalHeaderLabels(title) #This code works fine, the column headers are the ones from my database.
            #self.table.setVerticalHeaderItem(1,row)
    
            layout.addWidget(self.table, 0, 0)
            self.table.setItem(0, 0, QtGui.QTableWidgetItem(self.test.text()))
            #self.table.setItem(1, 0, QtGui.QTableWidgetItem(self.test2.text()))
    
            self.setLayout(layout)
    

    哈希代码是我玩过但导致错误的区域,或者只是不起作用。我附上了表的所有代码,以便更容易理解我要完成的任务。

    该程序当前从数据库中打开一个带有列标题的表,其中有3个空行(不包括测试)。我希望使用sqlite数据库中的值自动填充这些行。如果您需要了解任何信息,请询问。

    1 回复  |  直到 10 年前
        1
  •  1
  •   Alvaro Fuentes    10 年前

    你可以这样做:

        cur=cursor.fetchall()   
        for i,row in enumerate(cur):
            for j,val in enumerate(row):
                table.setItem(i, j, QtGui.QTableWidgetItem(str(val)))