vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 3
声望: 0

老师您好,painter.drawLine是在K线上画线,想在K线上方写几个标注,用painter.drawText写字不显示。能否教一下。不知道QQ群里能否问这样的问题,先在这里提问了

Administrator
avatar
加入于:
帖子: 2976
声望: 133

把你的代码贴上来看看

Member
avatar
加入于:
帖子: 3
声望: 0

class LineItem(CandleItem):
""""""

def __init__(self, manager: BarManager):
    """"""
    super().__init__(manager)

    self.white_pen: QtGui.QPen = pg.mkPen(color=(255, 255, 255), width=1)
def _draw_bar_picture(self, ix: int, bar: BarData) -> QtGui.QPicture:
    """"""
    last_bar = self._manager.get_bar(ix - 1)

    # Create objects
    picture = QtGui.QPicture()
    painter = QtGui.QPainter(picture)

    # Set painter color
    painter.setPen(self.white_pen)

    # Draw Line
    end_point = QtCore.QPointF(ix, bar.close_price)
    if last_bar:
        start_point = QtCore.QPointF(ix - 1, last_bar.close_price)
    else:
        start_point = end_point

    painter.drawLine(start_point, end_point)
    # Finish
    #painter.end()
    #painter.setFont(QtGui.QFont("Arial", 9));
    #测试用矩形,参考的K线实体部分,在这里面写字写不出来,
    rect = QtCore.QRectF(
        ix - BAR_WIDTH,
        bar.open_price,
        BAR_WIDTH * 3,
        bar.close_price - bar.open_price-0.02
    )
    #painter.drawRect(rect)#可以画
   # painter.drawText(0,0, 'AAAAA')  # 不可以
    #painter.drawText(rect, '33339')  # 不显示
    painter.drawText(rect,1, str("2"));#不显示
    painter.end()
    return picture

是在线上活动run.php里面连接收盘价的线这个类里面添加的

Administrator
avatar
加入于:
帖子: 2976
声望: 133

drawText的前两个参数是X/Y轴位置,不是长方形。。。

试试:

painter.drawText(ix, bar.high_price + 3, "2")

在K线X轴的位置,最高价上方3个像素的位置,显示一个2的字符串。

Member
avatar
加入于:
帖子: 3
声望: 0

painter.setFont(QtGui.QFont("Arial",9));
painter.drawText(ix, bar.high_price + 3, "A")
字体大小为9时,一片白,为3时可以看到A的形状,但是倒的,字体大小为2时,什么也看不到了。

description

description

description

Administrator
avatar
加入于:
帖子: 2976
声望: 133

这块就要具体折腾PyQt的底层绘图功能了,慢慢调试吧

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3