自学确实进度很慢,不过还是慢慢在摸索中前进,第一次将动态显示UI并将QTableView通过Qsqlmodle链接sqlite数据库并显示成功,记录如下,供初级入门爱好者学习并探讨。
import sys
from PySide2.QtWidgets import *
from PySide2.QtUiTools import *
from PySide2.QtSql import *
# from PySide2.QtCore import *
# from PySide2.QtGui import *
class Stats:
def __init__(self):
# 动态导入UI文件
self.ui = QUiLoader().load('SQLITE2QTableView.ui')
self.ui.setWindowTitle("Database Demo")
# 设置链接数据库
self.db = QSqlDatabase.addDatabase('QSQLITE')
self.db.setDatabaseName('worker.db')
if self.db.open(): # 打开数据库 成功
# self.__openTable() # 打开数据表
# print("打开数据库成功")
pass
else:
QMessageBox.warning(self, "错误", "打开数据库失败")
#链接2个按钮的信号
self.ui.btn_del.clicked.connect(self.delrow)
self.ui.btn_add.clicked.connect(self.addrow)
# 设置数据模型
self.model = QSqlTableModel()
self.model.setTable('worker')
self.model.setEditStrategy(QSqlTableModel.OnFieldChange)
self.model.select()
# UI视图链接模型
self.ui.tableView.setModel(self.model)
# self.ui.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) # 使表宽度自适应
# 删除一行的槽函数
def delrow(self):
curIndex = self.ui.tableView.currentIndex() # 获取当前选择单元格的模型索引
self.model.removeRow(curIndex.row()) # 删除当前行
self.model.submit()
# 增加一行的槽函数
def addrow(self):
rowNum = self.model.rowCount()
self.model.insertRow(rowNum)
self.model.setData(self.model.index(rowNum,0),id)
self.model.submit()
app = QApplication(sys.argv)
stats = Stats()
stats.ui.show()
app.exec_()