我正在尝试使用pyqtgraph绘制乘法项,但是不幸的是,当我尝试将TextItem添加到Viewbox时,它只显示了几秒钟,然后消失了。
任何人都有一个主意,如何永久修复TextItem?
我意识到,如果我将物品移到盒子中,它不会消失,但是对我来说,这不是一个好的解决方案:(。
任何有用的帮助表示赞赏!
谢谢!
这是我的代码:
import PyQt5
from PyQt5 import *
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QApplication
import pyqtgraph as pg
app = QApplication([])
win = pg.GraphicsWindow()
win.setWindowTitle('Senzor data:')
win.setGeometry(2, 50, 1916, 1005)
win_border = pg.mkPen({'color': "040", 'width': 3}) #m, y, k, w
win.ci.setBorder(win_border)
Layout_border = pg.mkPen({'color': "0DE", 'width': 1})
Layout = win.addLayout(border=Layout_border)
#Layout.setSpacing(0)
Layout.addLabel("<b>pulse number", row=0, col=1, rowspan=1, colspan=4)
Layout.nextRow()
Layout.addLabel('pulse', angle=-90, row=1, col=0, rowspan=4, colspan=1)
View5 = Layout.addViewBox(row=1, col=1, rowspan=4, colspan=4)
pp = pg.TextItem("place of the pulse counter", color=(200, 200, 200), border='c', fill='b', anchor=(0.5, 0.5))
pp.setFont(QFont("", 50, QFont.Bold))
View5.addItem(pp)
app.exec_()
最佳答案
通过分析viewRange()
方法从ViewBox
返回的内容,对其进行修改,直到生成[0,0,0,0]
,从而没有空间绘制TextItem。
一种解决方法是借助方法setRange()
建立固定范围:
View5 = Layout.addViewBox(row=1, col=1, rowspan=4, colspan=4)
View5.setRange(QRectF(-50, -50, 100, 100))
另一种可能的解决方案是使用
autoRange()
方法自动缩放并将TextItem
放置在中心位置,即0.5、0.5View5 = Layout.addViewBox(row=1, col=1, rowspan=4, colspan=4)
View5.autoRange()
pp = pg.TextItem("place of the pulse counter", color=(200, 200, 200), border='c', fill='b', anchor=(0.5, 0.5))
pp.setFont(QFont("", 50, QFont.Bold))
pp.setPos(.5, .5)
View5.addItem(pp)