如何将sqlite3数据在ui界面上显示,鼠标双击可弹窗显示具体信息?
时间: 2024-03-08 16:47:29 浏览: 61
要实现将SQLite3数据在UI界面上显示,需要以下步骤:
1. 创建一个SQLite3数据库,并在其中创建一个数据表。
2. 使用Qt提供的QSqlDatabase类连接到SQLite3数据库。
3. 使用QSqlQuery类执行SQL语句,将数据从数据库中查询出来。
4. 将数据显示在UI界面上,可以使用Qt提供的QTableView类。
5. 为QTableView添加一个双击事件的处理函数,弹出一个窗口显示具体信息。
以下是一个实现这个功能的示例代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView, QAbstractItemView, QMessageBox
from PyQt5.QtSql import QSqlDatabase, QSqlQuery, QSqlTableModel
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(100, 100, 600, 400)
self.setWindowTitle("SQLite3数据显示示例")
# 连接SQLite3数据库
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName("test.db")
if not db.open():
QMessageBox.critical(None, "无法打开数据库", "无法建立到数据库的连接,程序即将退出")
sys.exit(1)
# 查询数据
query = QSqlQuery()
query.exec_("SELECT * FROM student")
model = QSqlTableModel()
model.setQuery(query)
# 显示数据
view = QTableView(self)
view.setModel(model)
view.setSelectionBehavior(QAbstractItemView.SelectRows)
view.setEditTriggers(QAbstractItemView.NoEditTriggers)
view.doubleClicked.connect(self.show_detail)
self.setCentralWidget(view)
def show_detail(self, index):
# 双击事件的处理函数,弹出一个窗口显示具体信息
model = self.centralWidget().model()
data = model.data(model.index(index.row(), 0))
QMessageBox.information(self, "学生信息", f"学号:{data}")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在这个示例代码中,我们创建了一个名为test.db的SQLite3数据库,并在其中创建了一个名为student的数据表。然后使用QSqlDatabase类连接到这个数据库,使用QSqlQuery类执行SQL语句,将student表中的数据查询出来,并将数据显示在QTableView控件中。我们为QTableView控件添加了一个双击事件的处理函数show_detail,当用户双击某一行时,该函数会弹出一个窗口,显示该行数据的详细信息。