从tushare获取股票列表,在lineEdit中,支持股票代码搜索,股票中文名称搜索、
时间: 2023-12-09 15:02:26 浏览: 73
你可以通过设置 `QCompleter` 的 `model` 属性来实现在 QLineEdit 中同时支持股票代码和名称的搜索。以下是一个示例:
``` python
import tushare as ts
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QStandardItem, QStandardItemModel
from PyQt5.QtWidgets import QApplication, QLineEdit, QCompleter
# 获取股票列表
stock_list = ts.get_stock_basics()
# 创建一个带有自动补全功能的 QLineEdit 组件
line_edit = QLineEdit()
line_edit.setPlaceholderText('请输入股票代码或名称')
line_edit.setAlignment(Qt.AlignCenter)
# 创建一个 QStandardItemModel
model = QStandardItemModel()
# 将股票代码和名称添加到 QStandardItemModel 中
for code, name in zip(stock_list.index, stock_list['name']):
item = QStandardItem('{} {}'.format(code, name))
item.setData(code, Qt.UserRole)
model.appendRow(item)
# 创建一个自动补全器,并将 QStandardItemModel 设置为其 model 属性
completer = QCompleter(model, line_edit)
completer.setCaseSensitivity(Qt.CaseInsensitive)
completer.setFilterMode(Qt.MatchContains)
line_edit.setCompleter(completer)
```
这会在 QLineEdit 中同时支持股票代码和名称的搜索。当用户输入股票代码或名称时,自动补全器会根据其 `model` 属性中的数据进行匹配,并在下拉列表中显示匹配的结果。当用户选择一个结果时,可以通过 `QStandardItem` 的 `data()` 方法获取其对应的股票代码。例如:
``` python
# 获取用户选择的股票代码
item = completer.currentCompletion()
code = item.data(Qt.UserRole)
```
阅读全文