用pside2和sqlite制作一个界面,界面里有一个表格控件,表格中有三行信息,分别是三个人的不同信息,每一行都有一个复选框checkbox,界面里有一个搜索按钮和一个输出按钮,点击搜索找到需要的内容并勾选复选框,最后点击输出按钮即可打印该项目中的数据信息
时间: 2024-02-13 20:05:48 浏览: 111
好的,这是一个比较具体的问题。以下是基本的步骤:
1. 安装 PySide2 和 sqlite 库。
2. 创建一个 GUI 界面,包括一个表格控件、两个按钮和一个搜索框。
3. 连接 sqlite 数据库,并将三行信息插入到表格中。
4. 在搜索框中输入关键字,使用 SQL 语句查询匹配的数据,并将其显示在表格中。
5. 在每一行数据前添加一个复选框 checkbox。
6. 当用户勾选复选框时,将该行数据加入到输出列表中。
7. 当用户点击输出按钮时,将输出列表中的数据打印出来。
下面是一个简单的示例代码,可能需要根据具体情况进行修改和调整:
```python
import sys
from PySide2.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QPushButton, QLineEdit, QVBoxLayout, QWidget
import sqlite3
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 连接数据库
self.conn = sqlite3.connect('data.db')
self.cur = self.conn.cursor()
# 创建界面
self.table = QTableWidget()
self.table.setColumnCount(3)
self.table.setHorizontalHeaderLabels(['Name', 'Age', 'Gender'])
self.table.setRowCount(3)
self.table.setItem(0, 0, QTableWidgetItem('Alice'))
self.table.setItem(0, 1, QTableWidgetItem('20'))
self.table.setItem(0, 2, QTableWidgetItem('Female'))
self.table.setItem(1, 0, QTableWidgetItem('Bob'))
self.table.setItem(1, 1, QTableWidgetItem('30'))
self.table.setItem(1, 2, QTableWidgetItem('Male'))
self.table.setItem(2, 0, QTableWidgetItem('Charlie'))
self.table.setItem(2, 1, QTableWidgetItem('25'))
self.table.setItem(2, 2, QTableWidgetItem('Male'))
self.search_box = QLineEdit()
self.search_button = QPushButton('Search')
self.search_button.clicked.connect(self.search)
self.output_button = QPushButton('Output')
self.output_button.clicked.connect(self.output)
layout = QVBoxLayout()
layout.addWidget(self.table)
layout.addWidget(self.search_box)
layout.addWidget(self.search_button)
layout.addWidget(self.output_button)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
def search(self):
keyword = self.search_box.text()
self.cur.execute(f"SELECT * FROM data WHERE name LIKE '%{keyword}%' OR age LIKE '%{keyword}%' OR gender LIKE '%{keyword}%'")
rows = self.cur.fetchall()
self.table.setRowCount(len(rows))
for i, row in enumerate(rows):
self.table.setItem(i, 0, QTableWidgetItem(row[0]))
self.table.setItem(i, 1, QTableWidgetItem(str(row[1])))
self.table.setItem(i, 2, QTableWidgetItem(row[2]))
checkbox = QTableWidgetItem()
checkbox.setFlags(checkbox.flags() | Qt.ItemIsUserCheckable)
checkbox.setCheckState(Qt.Unchecked)
self.table.setItem(i, 3, checkbox)
def output(self):
output_list = []
for i in range(self.table.rowCount()):
if self.table.item(i, 3).checkState() == Qt.Checked:
name = self.table.item(i, 0).text()
age = self.table.item(i, 1).text()
gender = self.table.item(i, 2).text()
output_list.append(f'{name} - {age} - {gender}')
print('\n'.join(output_list))
def closeEvent(self, event):
self.conn.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
注意:这只是一个简单的示例代码,实际应用中可能需要更多的错误处理和优化。
阅读全文