pyqt5通过在QLineEdit输入关键字,查找sqlite3数据库中的数据,并显示在QTableWidget上
时间: 2024-03-27 22:36:24 浏览: 128
首先需要连接SQLite3数据库,可以使用Python自带的sqlite3模块,示例代码如下:
```python
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
# 创建游标对象
cur = conn.cursor()
# 查询数据
cur.execute("SELECT * FROM table_name WHERE column_name LIKE '%keyword%'")
# 获取查询结果
result = cur.fetchall()
# 关闭游标和数据库连接
cur.close()
conn.close()
```
其中,`test.db`是数据库文件名,`table_name`和`column_name`分别为表名和列名,`keyword`为要搜索的关键字。可以根据实际情况修改。
接下来,可以将查询结果显示在QTableWidget上,示例代码如下:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QLineEdit, QVBoxLayout, QWidget
import sqlite3
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建QLineEdit和QTableWidget
self.searchLineEdit = QLineEdit()
self.resultTableWidget = QTableWidget()
# 设置布局
centralWidget = QWidget()
layout = QVBoxLayout()
layout.addWidget(self.searchLineEdit)
layout.addWidget(self.resultTableWidget)
centralWidget.setLayout(layout)
self.setCentralWidget(centralWidget)
# 连接数据库
self.conn = sqlite3.connect('test.db')
self.cur = self.conn.cursor()
# 绑定信号槽
self.searchLineEdit.textChanged.connect(self.search)
def search(self, keyword):
# 清空QTableWidget
self.resultTableWidget.clearContents()
# 查询数据
self.cur.execute("SELECT * FROM table_name WHERE column_name LIKE '%{}%'".format(keyword))
result = self.cur.fetchall()
# 设置QTableWidget列数和行数
self.resultTableWidget.setColumnCount(len(result[0]))
self.resultTableWidget.setRowCount(len(result))
# 填充数据
for i, row in enumerate(result):
for j, col in enumerate(row):
item = QTableWidgetItem(str(col))
self.resultTableWidget.setItem(i, j, item)
def closeEvent(self, event):
# 关闭游标和数据库连接
self.cur.close()
self.conn.close()
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
其中,`test.db`、`table_name`和`column_name`与前面的代码相同。运行程序后,可以在QLineEdit中输入关键字,按下回车键或者移动光标时,QTableWidget会显示查询结果。在关闭程序时,游标和数据库连接会自动关闭。
阅读全文