def init_tree(self) -> None: """""" labels = [ "数据", "本地代码", "代码", "交易所", "数据量", "开始时间", "结束时间", "", "" ] self.tree = QtWidgets.QTreeWidget() self.tree.setColumnCount(len(labels)) self.tree.setHeaderLabels(labels) root = QtWidgets.QTreeWidgetItem(self.tree) root.setText(0, "K线数据") root.setExpanded(True) self.minute_child = QtWidgets.QTreeWidgetItem() self.minute_child.setText(0, "分钟线") root.addChild(self.minute_child) self.hour_child = QtWidgets.QTreeWidgetItem() self.hour_child.setText(0, "小时线") root.addChild(self.hour_child) self.daily_child = QtWidgets.QTreeWidgetItem() self.daily_child.setText(0, "日线") root.addChild(self.daily_child)
def init_child(self) -> None: """""" self.minute_child = QtWidgets.QTreeWidgetItem() self.minute_child.setText(0, "分钟线") self.tree.addTopLevelItem(self.minute_child) self.hour_child = QtWidgets.QTreeWidgetItem(self.tree) self.hour_child.setText(0, "小时线") self.tree.addTopLevelItem(self.hour_child) self.daily_child = QtWidgets.QTreeWidgetItem(self.tree) self.daily_child.setText(0, "日线") self.tree.addTopLevelItem(self.daily_child)
def refresh_tree(self) -> None: """""" self.clear_tree() data = self.engine.get_bar_data_available() for d in data: key = (d["symbol"], d["exchange"], d["interval"]) item = self.tree_items.get(key, None) if not item: item = QtWidgets.QTreeWidgetItem() self.tree_items[key] = item item.setText(1, ".".join([d["symbol"], d["exchange"]])) item.setText(2, d["symbol"]) item.setText(3, d["exchange"]) if d["interval"] == Interval.MINUTE.value: self.minute_child.addChild(item) elif d["interval"] == Interval.HOUR.value: self.hour_child.addChild(item) else: self.daily_child.addChild(item) output_button = QtWidgets.QPushButton("导出") output_func = partial(self.output_data, d["symbol"], Exchange(d["exchange"]), Interval(d["interval"]), d["start"], d["end"]) output_button.clicked.connect(output_func) show_button = QtWidgets.QPushButton("查看") show_func = partial(self.show_data, d["symbol"], Exchange(d["exchange"]), Interval(d["interval"]), d["start"], d["end"]) show_button.clicked.connect(show_func) delete_button = QtWidgets.QPushButton("删除") delete_func = partial( self.delete_data, d["symbol"], Exchange(d["exchange"]), Interval(d["interval"]), ) delete_button.clicked.connect(delete_func) self.tree.setItemWidget(item, 7, show_button) self.tree.setItemWidget(item, 8, output_button) self.tree.setItemWidget(item, 9, delete_button) item.setText(4, str(d["count"])) item.setText(5, d["start"].strftime("%Y-%m-%d %H:%M:%S")) item.setText(6, d["end"].strftime("%Y-%m-%d %H:%M:%S")) self.minute_child.setExpanded(True) self.hour_child.setExpanded(True) self.daily_child.setExpanded(True)
def refresh_tree(self) -> None: """""" self.clear_tree() overviews = self.engine.get_bar_overview() for overview in overviews: key = (overview.symbol, overview.exchange, overview.interval) item = self.tree_items.get(key, None) if not item: item = QtWidgets.QTreeWidgetItem() self.tree_items[key] = item item.setText(1, f"{overview.symbol}.{overview.exchange.value}") item.setText(2, overview.symbol) item.setText(3, overview.exchange.value) if overview.interval == Interval.MINUTE: self.minute_child.addChild(item) elif overview.interval == Interval.HOUR: self.hour_child.addChild(item) else: self.daily_child.addChild(item) output_button = QtWidgets.QPushButton("导出") output_func = partial(self.output_data, overview.symbol, overview.exchange, overview.interval, overview.start, overview.end) output_button.clicked.connect(output_func) show_button = QtWidgets.QPushButton("查看") show_func = partial(self.show_data, overview.symbol, overview.exchange, overview.interval, overview.start, overview.end) show_button.clicked.connect(show_func) delete_button = QtWidgets.QPushButton("删除") delete_func = partial(self.delete_data, overview.symbol, overview.exchange, overview.interval) delete_button.clicked.connect(delete_func) self.tree.setItemWidget(item, 7, show_button) self.tree.setItemWidget(item, 8, output_button) self.tree.setItemWidget(item, 9, delete_button) item.setText(4, str(overview.count)) item.setText(5, overview.start.strftime("%Y-%m-%d %H:%M:%S")) item.setText(6, overview.end.strftime("%Y-%m-%d %H:%M:%S")) self.minute_child.setExpanded(True) self.hour_child.setExpanded(True) self.daily_child.setExpanded(True)
def get_portfolio_item(self, reference: str) -> QtWidgets.QTreeWidgetItem: """""" portfolio_item = self.portfolio_items.get(reference, None) if not portfolio_item: portfolio_item = QtWidgets.QTreeWidgetItem() portfolio_item.setText(0, reference) for i in range(2, self.column_count): portfolio_item.setTextAlignment(i, QtCore.Qt.AlignCenter) self.portfolio_items[reference] = portfolio_item self.tree.addTopLevelItem(portfolio_item) self.reference_combo.addItem(reference) return portfolio_item
def get_contract_item(self, reference: str, vt_symbol: str) -> QtWidgets.QTreeWidgetItem: """""" key = (reference, vt_symbol) contract_item = self.contract_items.get(key, None) if not contract_item: contract_item = QtWidgets.QTreeWidgetItem() contract_item.setText(1, vt_symbol) for i in range(2, self.column_count): contract_item.setTextAlignment(i, QtCore.Qt.AlignCenter) self.contract_items[key] = contract_item portfolio_item = self.get_portfolio_item(reference) portfolio_item.addChild(contract_item) return contract_item
def init_child(self) -> None: """""" self.child = {} self.minute_child = QtWidgets.QTreeWidgetItem() self.minute_child.setText(0, "1分钟线") self.tree.addTopLevelItem(self.minute_child) self.child[Interval.MINUTE.value] = self.minute_child self.minute_child_3 = QtWidgets.QTreeWidgetItem() self.minute_child_3.setText(0, "3分钟线") self.tree.addTopLevelItem(self.minute_child_3) self.child[Interval.MINUTE_3.value] = self.minute_child_3 self.minute_child_5 = QtWidgets.QTreeWidgetItem() self.minute_child_5.setText(0, "5分钟线") self.tree.addTopLevelItem(self.minute_child_5) self.child[Interval.MINUTE_5.value] = self.minute_child_5 self.minute_child_15 = QtWidgets.QTreeWidgetItem() self.minute_child_15.setText(0, "15分钟线") self.tree.addTopLevelItem(self.minute_child_15) self.child[Interval.MINUTE_15.value] = self.minute_child_15 self.minute_child_30 = QtWidgets.QTreeWidgetItem() self.minute_child_30.setText(0, "30分钟线") self.tree.addTopLevelItem(self.minute_child_30) self.child[Interval.MINUTE_30.value] = self.minute_child_30 self.hour_child = QtWidgets.QTreeWidgetItem(self.tree) self.hour_child.setText(0, "小时线") self.tree.addTopLevelItem(self.hour_child) self.child[Interval.HOUR.value] = self.hour_child self.hour_child_2 = QtWidgets.QTreeWidgetItem(self.tree) self.hour_child_2.setText(0, "2小时线") self.tree.addTopLevelItem(self.hour_child_2) self.child[Interval.HOUR_2.value] = self.hour_child_2 self.hour_child_4 = QtWidgets.QTreeWidgetItem(self.tree) self.hour_child_4.setText(0, "4小时线") self.tree.addTopLevelItem(self.hour_child_4) self.child[Interval.HOUR_4.value] = self.hour_child_4 self.hour_child_6 = QtWidgets.QTreeWidgetItem(self.tree) self.hour_child_6.setText(0, "6小时线") self.tree.addTopLevelItem(self.hour_child_6) self.child[Interval.HOUR_6.value] = self.hour_child_6 self.hour_child_8 = QtWidgets.QTreeWidgetItem(self.tree) self.hour_child_8.setText(0, "8小时线") self.tree.addTopLevelItem(self.hour_child_8) self.child[Interval.HOUR_8.value] = self.hour_child_8 self.hour_child_12 = QtWidgets.QTreeWidgetItem(self.tree) self.hour_child_12.setText(0, "12小时线") self.tree.addTopLevelItem(self.hour_child_12) self.child[Interval.HOUR_12.value] = self.hour_child_12 self.daily_child = QtWidgets.QTreeWidgetItem(self.tree) self.daily_child.setText(0, "日线") self.tree.addTopLevelItem(self.daily_child) self.child[Interval.DAILY.value] = self.daily_child self.daily_child_3 = QtWidgets.QTreeWidgetItem(self.tree) self.daily_child_3.setText(0, "3日线") self.tree.addTopLevelItem(self.daily_child_3) self.child[Interval.DAILY_3.value] = self.daily_child_3 self.week_child = QtWidgets.QTreeWidgetItem(self.tree) self.week_child.setText(0, "周线") self.tree.addTopLevelItem(self.week_child) self.child[Interval.WEEKLY.value] = self.week_child self.month_child = QtWidgets.QTreeWidgetItem(self.tree) self.month_child.setText(0, "月线") self.tree.addTopLevelItem(self.month_child) self.child[Interval.MONTH.value] = self.month_child