如何使用Python制作交互式股票K线图?
如何使用Python制作交互式股票K线图? - 知乎 (zhihu.com)
在之前的文章中,我们介绍了使用PyQtGraph在PyQt5中绘制股票K线图:
以及使用PyQtGraph绘制带十字光标的的股票走势折线图:
今天,我们(州的先生:http://zmister.com)将上述两者结合起来,在PyQt5中借助PyQtGtaph绘制一个带有十字光标的股票历史走势K线图。
本文首发州的先生博客,原文链接:
一、创建图形界面窗口骨架
首先,我们来创建一个基础的图形界面。里面包含了:
- 一个文本输入框,用于输入股票代码;
- 一个下拉选择框,用于选择时间段;
- 一个按钮,用于点击查询数据和生成K线图;
- 一个空白图形,用于放置K线图;
通过如下代码进行创建:
# 主窗口类
class MainUi(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("州的先生zmister.com A股股票历史走势K线图")
self.main_widget = QtWidgets.QWidget() # 创建一个主部件
self.main_layout = QtWidgets.QGridLayout() # 创建一个网格布局
self.main_widget.setLayout(self.main_layout) # 设置主部件的布局为网格
self.setCentralWidget(self.main_widget) # 设置窗口默认部件
self.stock_code = QtWidgets.QLineEdit() # 创建一个文本输入框部件
self.option_sel = QtWidgets.QComboBox() # 创建一个下拉框部件
self.option_sel.addItem("近7天")
self.option_sel.addItem("近30天")
self.option_sel.addItem("近60天")
self.option_sel.addItem("近180天")
self.option_sel.addItem("近360天")
self.que_btn = QtWidgets.QPushButton("查询") # 创建一个按钮部件
self.k_widget = QtWidgets.QWidget() # 实例化一个widget部件作为K线图部件
self.k_layout = QtWidgets.QGridLayout() # 实例化一个网格布局层
self.k_widget.setLayout(self.k_layout) # 设置K线图部件的布局层
self.k_plt = pg.PlotWidget() # 实例化一个绘图部件
self.k_layout.addWidget(self.k_plt) # 添加绘图部件到K线图部件的网格布局层
# 将上述部件添加到布局层中
self.main_layout.addWidget(self.stock_code,0,0,1,1)
self.main_layout.addWidget(self.option_sel,0,1,1,1)
self.main_layout.addWidget(self.que_btn,0,2,1,1)
self.main_layout.addWidget(self.k_widget