首页 > 解决方案 > Pyqtgraph TextItem 居中对齐文本

问题描述

我正在尝试使用 pyqtgraph 使文本居中对齐,而不是使用 html 左对齐。但是,似乎当我使用<div style="text-align: center"></div>它时似乎没有效果。

import sys
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui, QtWidgets

app = QtWidgets.QApplication(sys.argv)

win = QtWidgets.QMainWindow()
gv = pg.GraphicsView()
win.setCentralWidget(gv)
win.show()

text = pg.TextItem(html='<div style="text-align: center">I am on the top<br>bottom</div>',
                  fill=QtGui.QColor(255, 255, 255))
text.setPos(100, 100)
gv.addItem(text)

sys.exit(app.exec_())

这个

底部文本根本不是居中对齐的,当我更改<div style="text-align: center"></div><div style="text-align: right"></div>例如时,它仍然没有做任何事情。我究竟做错了什么?

标签: htmlpyqtpyqtgraph

解决方案


如果要设置文本对齐方式,可以使用内部 QGraphicsTextItem 的 document():

text = pg.TextItem(html='<div>I am on the top<br>bottom</div>',
                  fill=QtGui.QColor(255, 255, 255))

it = text.textItem
option = it.document().defaultTextOption()
option.setAlignment(QtCore.Qt.AlignCenter)
it.document().setDefaultTextOption(option)
it.setTextWidth(it.boundingRect().width())

text.setPos(100, 100)
gv.addItem(text)

在此处输入图像描述


推荐阅读