【问题标题】:How to insert my database into my QTableWidget table?如何将我的数据库插入到我的 QTableWidget 表中?
【发布时间】:2014-01-26 18:21:03
【问题描述】:
class Table(QtGui.QDialog):
 def __init__(self, parent=None):
    super(Table, self).__init__(parent)
    layout = QtGui.QGridLayout() 

    self.table = QtGui.QTableWidget()
    self.table.setRowCount(20)
    self.table.setColumnCount(3)
    layout.addWidget(self.table)

    self.enterDataInTable()

    self.setLayout(layout)

 def enterDataInTable(self):  
    for row in range(0,20):
        for column in range(0,3):
            self.table.setItem(row, column, QtGui.QTableWidgetItem("cell %s-%s"%(row+1,column+1)))

此代码生成一个包含 20 行和 3 列的表格,每个表格中的数据都告诉我它的位置。我想拥有我的数据库列和行标题,包括其中的信息。这将使用 sqlite 3。如何在此处插入数据库并正确连接?

【问题讨论】:

    标签: python database sqlite pyqt4 qtablewidget


    【解决方案1】:

    Qt 具有可连接到数据库的即用型表模型。

    检查

    http://pyqt.sourceforge.net/Docs/PyQt4/qsqltablemodel.html

    以及您的 PyQt 安装中的 site-packages\PyQt4\examples\sql(它安装在我的机器上)文件夹。

    【讨论】:

      【解决方案2】:

      解决这个问题的更好方法是使用模型视图编程。这是使用模型视图的解决方案。

      class MyTableModel(QtCore.QAbstractTableModel):
          def __init__(self,dbDir,parent=None):
              QtCore.QabstractTableModel.__init__(self,parent)
             dbConnection = sqlite3.connect(dbDir,isolation_level=None)
              cursor=dbConnection.cursor()
              dbConnection.execute("""SELECT * FROM tablename""")
              data=cursor.fetchall()
              data =[[]]
              count1=0
                  for i in data:
                  count2 = 0
                  for x in i:
                      data[count1][count2] =x
                      count2 +=1
      
              self.__data=data
              self.__header=[" First "," Second "," Thirdt " ]
      
          def rowCount( self, parent ):
              return len(self.__data)
      
          def columnCount( self , parent ):
              return len(self.__data[0])
      
          def flags( self,index):
              return QtCore.Qt.ItemIsEnabled |QtCore.Qt.ItemIsSelectable
      
          def data ( self , index , role ):
              if role == QtCore.Qt.DisplayRole:
                  row = index.row()
                  column = index.column()
                  value = self.__data[row][column]
                  return value.name()
      
          def headerData(self , section , orientation , role):
              if role == QtCore.Qt.DisplayRole:
                  if orientation == QtCore.Qt.Horizontal:
                      return self.__header[section]
      
      class Table(QtGui.QDialog):
       def __init__(self, parent=None):
          super(Table, self).__init__(parent)
          layout = QtGui.QGridLayout() 
          self.MyTableMModel = MyTableModel(table_directory) # pass directory in which table exists
          self.table = QtGui.QTableView()
          self.table.setModel(self.MyTableModel)
          layout.addWidget(self.table)
          self.setLayout(layout)
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 2018-01-16
      • 1970-01-01
      • 2016-01-20
      • 2021-11-05
      • 1970-01-01
      • 2014-10-13
      相关资源
      最近更新 更多