pyqtgraph:如何知道TextItem的大小?

安托万

我正在使用pyqtgraph绘制图形,并在其中放置一些文本(例如,数据的最大值...)

我的问题是如何知道TextItem输入的大小(高度,宽度)?它用于控制其位置,以防止其脱离窗口。

例如我的代码可能是这样的:

    # -*- coding: utf-8 -*-

from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg


app = QtGui.QApplication([])


win = pg.GraphicsWindow()

pg.setConfigOptions(antialias=True)


voieTT=np.ones(100)
voieTemps=np.ones(100)
for i in range(100):
    voieTT[i]=np.random.random_sample()
    voieTemps[i]=i

signemax=np.max(voieTT)
tmax=np.where(voieTT==np.max(voieTT))[0][0]


grapheTT = win.addPlot(enableMenu=False)

grapheTTVB=grapheTT.getViewBox()                      
grapheTT.plot(voieTemps, voieTT)
grapheTT.plot([tmax],[signemax],symbol='o',symbolSize=8)
grapheTT.showGrid(x=True, y=True)



textVmax = pg.TextItem(anchor=(0.5,1.5), border='w', fill=(0,0,255))
textVmax.setHtml('<div style="text-align: center"><span style="color: #FFF;">Vmax=%0.1f mm/s @ %0.1f s</span></div>'%(np.abs(signemax),tmax))
grapheTT.addItem(textVmax)
textVmax.setPos(tmax, signemax)


if __name__ == '__main__':
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()
最丑陋的
#changed original code to simple plot() because manual window structure
#somehow didn't automatically cooperate with viewbox' map methods

from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg

voieTT=np.ones(100)
voieTemps=np.ones(100)
for i in range(100):
    voieTT[i]=np.random.random_sample()
    voieTemps[i]=i

signemax=np.max(voieTT)
tmax=np.where(voieTT==np.max(voieTT))[0][0]

grapheTT = pg.plot(enableMenu=False)

grapheTTVB=grapheTT.getViewBox()
grapheTT.plot(voieTemps, voieTT)
grapheTT.plot([tmax],[signemax],symbol='o',symbolSize=8)
grapheTT.showGrid(x=True, y=True)

textVmax = pg.TextItem(anchor=(0.5,1.5), border='w', fill=(0,0,255))
textVmax.setHtml('<div style="text-align: center"><span style="color: #FFF;">Vmax=%0.1f mm/s @ %0.1f s</span></div>'%(np.abs(signemax),tmax))
grapheTT.addItem(textVmax)
textVmax.setPos(tmax, signemax)



#DISCLAIMER: there's likely a better way, but this works too:

#you can get pixel dimensions x,y,w,h from bounding rectangle
br = textVmax.boundingRect()
print br

#and scale them into viewbox data dimensions
sx, sy = grapheTTVB.viewPixelSize() #scaling factors
print sx, sy
print sx*br.width(), sy*br.height()


#ALSO, you can just use ViewBox autorange
#ViewBox autoranges based on its contained items' dataBounds() info
#however TextItem.py is a UIGraphicsItem.py with dataBounds() return None
"""Called by ViewBox for determining the auto-range bounds.
By default, UIGraphicsItems are excluded from autoRange."""

#so, following example of... ArrowItem.py
#here is a simple dataBounds() for TextItem

def Autoranging_TextItem_dataBounds(axis, frac=1.0, orthoRange=None):
    br = textVmax.boundingRect()
    sx, sy = grapheTTVB.viewPixelSize()
    w, h = sx*br.width(), sy*br.height()
    if axis == 0: return [-w/2, w/2]
    if axis == 1: return [0, h]

textVmax.dataBounds = Autoranging_TextItem_dataBounds


if __name__ == '__main__':
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

pyqtgraph:如何知道TextItem的大小?

来自分类Dev

如何在PyQtGraph中使用TextItem.setText()设置字体大小?

来自分类Dev

如何在PyQtGraph中使用TextItem.setText()设置字体大小?

来自分类Dev

pyqtgraph TextItem居中对齐文本

来自分类Dev

在pyqtgraph中动态旋转TextItem

来自分类Dev

如何知道包裹的大小

来自分类Dev

如何知道分区大小

来自分类Dev

如何知道python模块的大小?

来自分类Dev

sizeof如何知道数组的大小?

来自分类Dev

如何从gridlayout知道组件的大小?

来自分类Dev

如何知道/ boot的正确大小

来自分类Dev

如何知道ajax请求中响应的大小

来自分类Dev

如何知道Java方法的字节码大小

来自分类Dev

python:如何知道队列的最大大小

来自分类Dev

如何知道CENTOS中的目录大小

来自分类Dev

如何知道JavaScript中的文件大小?

来自分类Dev

pv如何知道目标磁盘的大小?

来自分类Dev

如何知道主目录的大小限制?

来自分类Dev

python:如何知道队列的最大大小

来自分类Dev

如何知道.exe程序的堆栈大小限制?

来自分类Dev

有效大小与数组的实际大小的关系,如何知道有效大小?

来自分类Dev

如何知道特定字符串的TextView大小

来自分类Dev

如何知道Cassandra中键空间和列族的大小?

来自分类Dev

将数组传递给函数后如何知道数组的大小

来自分类Dev

gcc如何知道用于内联汇编的寄存器大小?

来自分类Dev

如何知道Cassandra中键空间和列族的大小?

来自分类Dev

如何知道android中的一个显示的大小?

来自分类Dev

Libharu pdf创作:如何知道印刷文字的大小

来自分类Dev

如何在Oracle中知道带有照片的表格的大小

Related 相关文章

热门标签

归档