老师您好,painter.drawLine是在K线上画线,想在K线上方写几个标注,用painter.drawText写字不显示。能否教一下。不知道QQ群里能否问这样的问题,先在这里提问了
老师您好,painter.drawLine是在K线上画线,想在K线上方写几个标注,用painter.drawText写字不显示。能否教一下。不知道QQ群里能否问这样的问题,先在这里提问了
把你的代码贴上来看看
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里面连接收盘价的线这个类里面添加的
drawText的前两个参数是X/Y轴位置,不是长方形。。。
试试:
painter.drawText(ix, bar.high_price + 3, "2")
在K线X轴的位置,最高价上方3个像素的位置,显示一个2的字符串。
painter.setFont(QtGui.QFont("Arial",9));
painter.drawText(ix, bar.high_price + 3, "A")
字体大小为9时,一片白,为3时可以看到A的形状,但是倒的,字体大小为2时,什么也看不到了。
这块就要具体折腾PyQt的底层绘图功能了,慢慢调试吧