PyQt5: chapter9-显示指定数据库表中的行

实例

  1. 创建基于Dialog without Buttons模板窗口
  2. 添加三个Label,两个LineEdit,一个PushButton,一个Table Widget部件
  3. 设定Label的text为Enter database name,Enter table name
  4. 设定PushButton的text为Display Rows
  5. 设定LineEdit的objectName为lineEditDBName,lineEditTableName
  6. 设定Push Button的objectName为pushButtonDisplayRows
  7. 设定第三个Label的objectName为labelResponse
  8. 在属性编辑器中设定Table Widget的columnCount为2,rowCount为3
  9. 保存为demoDisplayRowsOfTable.ui
  10. 使用pyuic生成demoDisplayRowsOfTable.py
  11. 创建callDisplayRows.py,代码如下
     
import sqlite3, sys
from PyQt5.QtWidgets import QDialog, QApplication,QTableWidgetItem
from sqlite3 import Error
from cookbook_200503.demoDisplayRowsOfTable import *
class MyForm(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.pushButtonDisplayRows.clicked.connect(self.DisplayRows)
        self.show()
    def DisplayRows(self):
        sqlStatement="SELECT * FROM "+self.ui.lineEditTableName.text()
        try:
            conn = sqlite3.connect(self.ui.lineEditDBName.text()+ ".db")
            cur = conn.cursor()
            cur.execute(sqlStatement)
            rows = cur.fetchall()
            rowNo=0
            for tuple in rows:
                self.ui.labelResponse.setText("")
                colNo=0
                for columns in tuple:
                    oneColumn=QTableWidgetItem(columns)
                    self.ui.tableWidget.setItem(rowNo, colNo, oneColumn)
                    colNo+=1
                rowNo+=1
        except Error as e:
            self.ui.tableWidget.clear()
            self.ui.labelResponse.setText("Error in accessing table")
        finally:
            conn.close()
if __name__=="__main__":
    app = QApplication(sys.argv)
    w = MyForm()
    w.show()
    sys.exit(app.exec())

猜你喜欢

转载自blog.csdn.net/weixin_43307431/article/details/105906124