获取北向资金数据
如果我们需要构建北向资金界面,首先也是需要获取到北向资金的交易数据。我们直接上代码:
import akshare as ak from PyQt5 import QtCore from PyQt5.QtCore import pyqtSignal from pandas import DataFrame class NchThread(QtCore.QThread): _signal = pyqtSignal(DataFrame) def __init__(self): super(NchThread, self).__init__() def run(self): df = ak.stock_em_hsgt_board_rank(symbol="北向资金增持行业板块排行", indicator="今日") self._signal.emit(df)
这里,获取网络数据同样也需要在线程中获取,并返回给界面。
pyqt5构建北向资金界面
同之前的龙虎榜数据一样,我们通过QTableWidget组件进行构建,代码与上篇类似,我们直接上代码:
class MyFrom(QMainWindow): # 北向资金 def init_nch(self): self.nchGrid = QGridLayout() self.nchGrid.setSpacing(5) self.nchTab.setLayout(self.nchGrid) self.nchThread = NchThread() self.nchThread._signal.connect(self.nchThead_callbacklog) self.nchThread.start() def nchThead_callbacklog(self, df): ft = QFont() ft.setPointSize(10) ft.setBold(True) nchtableWidget = QTableWidget(len(df), 6) nchtableWidget.setHorizontalHeaderLabels( ['名称', '最新涨跌幅', '北向资金今日持股-股票只数', "北向资金今日增持估计-市值", "今日增持最大股-市值", "今日减持最大股-市值"]) nchtableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers) # 不可编辑 nchtableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Fixed) # 禁止拖拽 nchtableWidget.setSelectionBehavior(QAbstractItemView.SelectRows) # 只能选中一行 nchtableWidget.itemClicked.connect(self.tableWidget_connect) nchtableWidget.verticalHeader().setVisible(False) nchtableWidget.setShowGrid(False) # 不显示子线条 nchtableWidget.setColumnWidth(0, 150) # 设置第一列宽 nchtableWidget.setColumnWidth(1, 100) # 设置第二列宽 nchtableWidget.setColumnWidth(2, 200) # 设置第三列宽 nchtableWidget.setColumnWidth(3, 210) # 设置第三列宽 nchtableWidget.setColumnWidth(4, 200) # 设置第三列宽 nchtableWidget.setColumnWidth(5, 200) # 设置第三列宽 for idx, row in df.iterrows(): if float(row["最新涨跌幅"]) < 0: m_color = QColor(0, 255, 0) elif float(row["最新涨跌幅"]) > 0: m_color = QColor(255, 0, 0) else: m_color = QColor(255, 255, 255) newItem0 = QTableWidgetItem(str(row["名称"])) newItem0.setFont(ft) newItem0.setForeground(QBrush(m_color)) newItem1 = QTableWidgetItem(str(row["最新涨跌幅"])) newItem1.setFont(ft) newItem1.setForeground(QBrush(m_color)) newItem2 = QTableWidgetItem(str(row["北向资金今日持股-股票只数"])) newItem2.setFont(ft) newItem2.setForeground(QBrush(m_color)) newItem3 = QTableWidgetItem(str(row["北向资金今日增持估计-市值"])) newItem3.setFont(ft) newItem3.setForeground(QBrush(m_color)) newItem4 = QTableWidgetItem(str(row["今日增持最大股-市值"])) newItem4.setFont(ft) newItem4.setForeground(QBrush(m_color)) newItem5 = QTableWidgetItem(str(row["今日减持最大股-市值"])) newItem5.setFont(ft) newItem5.setForeground(QBrush(m_color)) newItem0.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) newItem1.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) newItem2.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) newItem3.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) newItem4.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) newItem5.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) nchtableWidget.setItem(idx, 0, newItem0) nchtableWidget.setItem(idx, 1, newItem1) nchtableWidget.setItem(idx, 2, newItem2) nchtableWidget.setItem(idx, 3, newItem3) nchtableWidget.setItem(idx, 4, newItem4) nchtableWidget.setItem(idx, 5, newItem5) self.nchGrid.addWidget(nchtableWidget, 0, 0, 16, 16)
运行之后,显示的效果如下图所示:
软件资源代码下载地址:点击下载