python pyqt5 mysql用import mysql.connector实现点击表格的内容将内容放到输入框(多个字段),给出示例代码
时间: 2024-06-09 15:10:39 浏览: 119
下面是一个简单的示例代码,实现了点击表格中的一行后将多个字段的内容放到输入框中:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QVBoxLayout, QLineEdit
import mysql.connector
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 350, 300)
self.setWindowTitle('MySQL Table Widget')
vbox = QVBoxLayout()
# 创建表格
self.tableWidget = QTableWidget()
self.tableWidget.setRowCount(5)
self.tableWidget.setColumnCount(3)
# 连接 MySQL 数据库
cnx = mysql.connector.connect(user='root', password='password', host='localhost', database='test_db')
cursor = cnx.cursor()
# 查询表中的数据
query = ("SELECT id, name, age FROM persons")
cursor.execute(query)
# 将查询结果填充到表格中
for i, (id, name, age) in enumerate(cursor):
self.tableWidget.setItem(i, 0, QTableWidgetItem(str(id)))
self.tableWidget.setItem(i, 1, QTableWidgetItem(name))
self.tableWidget.setItem(i, 2, QTableWidgetItem(str(age)))
# 关闭数据库连接
cursor.close()
cnx.close()
# 将表格添加到布局中
vbox.addWidget(self.tableWidget)
# 创建输入框
self.line_edit_id = QLineEdit()
self.line_edit_name = QLineEdit()
self.line_edit_age = QLineEdit()
# 将输入框添加到布局中
vbox.addWidget(self.line_edit_id)
vbox.addWidget(self.line_edit_name)
vbox.addWidget(self.line_edit_age)
# 将布局设置为主窗口的布局
self.setLayout(vbox)
# 绑定表格的点击事件
self.tableWidget.cellClicked.connect(self.tableClicked)
self.show()
def tableClicked(self, row, col):
# 获取点击的行的数据
id = self.tableWidget.item(row, 0).text()
name = self.tableWidget.item(row, 1).text()
age = self.tableWidget.item(row, 2).text()
# 将数据填充到输入框中
self.line_edit_id.setText(id)
self.line_edit_name.setText(name)
self.line_edit_age.setText(age)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
```
这个示例代码创建了一个包含三个字段的 persons 表格,然后将表格的数据填充到 QTableWidget 中。当用户点击表格中的一行时,会触发 `tableClicked` 方法,该方法会将该行的三个字段的值分别填充到三个 QLineEdit 中。
阅读全文