pyqt5实现输入框检索历史记录
时间: 2024-09-20 09:07:59 浏览: 66
PyQt5 文本输入框自动补全QLineEdit的实现示例
PyQt5是一个用于Python的图形用户界面工具包,它基于Qt库。要在PyQt5中实现输入框检索历史记录功能,你可以结合QLineEdit(线性编辑器,等同于输入框)和QListWidget或QComboBox(列表视图或组合框)来保存和查询历史记录。以下是一个简单的示例:
1. 首先,你需要创建一个QLineEdit实例来获取用户的输入,并添加信号处理器`textChanged`,以便在内容变化时更新历史记录。
```python
from PyQt5.QtWidgets import QApplication, QLineEdit, QListWidget
class HistoryLineEdit(QLineEdit):
history_changed = pyqtSignal(str)
def __init__(self, parent=None):
super().__init__(parent)
self.history_list = QListWidget(parent)
# 将文本改变信号链接到处理函数
self.textChanged.connect(self.update_history)
def update_history(self, text):
self.history_changed.emit(text)
# 清空历史列表并填充新的文本
self.history_list.clear()
self.history_list.addItem(text)
```
2. 创建一个槽函数,当接收到`history_changed`信号时,从QListWidget中显示或搜索历史记录。
```python
def show_history(history_line_edit, search_text):
if not history_line_edit.text():
return
filtered_items = [item for item in history_line_edit.history_list.items() if search_text.lower() in item.text().lower()]
history_line_edit.history_list.scrollToTop()
history_line_edit.history_list.clear()
history_line_edit.history_list.addItems(filtered_items)
```
3. 在主窗口或者适当的地方连接这两个组件,例如:
```python
app = QApplication([])
input_box = HistoryLineEdit()
search_button = QPushButton("Search History")
search_button.clicked.connect(lambda: show_history(input_box, input_box.text()))
# 显示历史列表
history_layout = QVBoxLayout()
history_layout.addWidget(input_box)
history_layout.addWidget(search_button)
main_window = QWidget()
main_window.setLayout(history_layout)
main_window.show()
app.exec_()
```
阅读全文