实例
- 创建基于Dialog without Buttons模板窗口
- 添加三个Label,两个LineEdit,一个PushButton,一个Table Widget部件
- 设定Label的text为Enter database name,Enter table name
- 设定PushButton的text为Display Rows
- 设定LineEdit的objectName为lineEditDBName,lineEditTableName
- 设定Push Button的objectName为pushButtonDisplayRows
- 设定第三个Label的objectName为labelResponse
- 在属性编辑器中设定Table Widget的columnCount为2,rowCount为3
- 保存为demoDisplayRowsOfTable.ui
- 使用pyuic生成demoDisplayRowsOfTable.py
- 创建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())