optimize view iteractions

This commit is contained in:
2022-09-07 12:42:46 +02:00
parent a2dc5c73dc
commit 18a7b2abb4
2 changed files with 70 additions and 29 deletions

View File

@@ -515,34 +515,58 @@ class FixTargetFrame(pg.ROI):
param['trf']=trf
return param
class TxtROI(pg.ROI):
def __init__(self, pos, size, **kargs):
pg.ROI.__init__(self, pos, size, **kargs)
def paint(self, p, *args):
#pg.ROI.paint(self, p, *args)
r=QtCore.QRectF(0, 0, self.state['size'][0], self.state['size'][1]).normalized()
p.setRenderHint(QtGui.QPainter.Antialiasing)
p.setPen(self.currentPen)
#p.translate(r.left(), r.top())
#p.scale(r.width(), r.height())
#p.drawRect(0, 0, 1, 1)
p.drawRect(r)
tr=p.worldTransform()
obj_info(tr)
tr.setMatrix(tr.m11(),tr.m12(),tr.m13(),tr.m21(),-tr.m22(),tr.m23(),tr.m31(),tr.m32(),tr.m33())
p.setWorldTransform(tr)
obj_info(tr)
obj_info(p.transform())
obj_info(p.worldTransform())
f=p.font();
f.setPixelSize(15)
p.setFont(f)
p.drawText(0, 5, 'Thierry')
## Start Qt event loop unless running in interactive mode or using pyside.
if __name__=='__main__':
# TODO: pg.ItemGroup does not support bounding box and therefore vb.autoRange() does not work
class ItemGroup(pg.ItemGroup):
# own item group that supports bounding rect
def __init__(self, *args, **kargs):
pg.ItemGroup.__init__(self, *args, **kargs)
def boundingRect(self):
# tr=self.transform()
boRects=[]
for item in self.childItems():
boRects.append(item.boundingRect())
if boRects:
# r=QtCore.QRectF(tr.map(boRects[0].bottomRight()),tr.map(boRects[0].topLeft()))
return boRects[0]
else:
return pg.ItemGroup.boundingRect(self)
def addItem(self, *args, **kargs):
self.setFlag(self.ItemHasNoContents, False)
pg.ItemGroup.addItem(self, *args, **kargs)
class TxtROI(pg.ROI):
def __init__(self, pos, size, **kargs):
pg.ROI.__init__(self, pos, size, **kargs)
def paint(self, p, *args):
# pg.ROI.paint(self, p, *args)
r=QtCore.QRectF(0, 0, self.state['size'][0], self.state['size'][1]).normalized()
p.setRenderHint(QtGui.QPainter.Antialiasing)
p.setPen(self.currentPen)
# p.translate(r.left(), r.top())
# p.scale(r.width(), r.height())
# p.drawRect(0, 0, 1, 1)
p.drawRect(r)
tr=p.worldTransform()
obj_info(tr)
tr.setMatrix(tr.m11(), tr.m12(), tr.m13(), tr.m21(), -tr.m22(), tr.m23(), tr.m31(), tr.m32(), tr.m33())
p.setWorldTransform(tr)
obj_info(tr)
obj_info(p.transform())
obj_info(p.worldTransform())
f=p.font();
f.setPixelSize(15)
p.setFont(f)
p.drawText(0, 5, 'Thierry')
import sys
import argparse
#(h, t)=os.path.split(sys.argv[0]);cmd='\n '+(t if len(h)>20 else sys.argv[0])+' '
@@ -638,6 +662,7 @@ if __name__=='__main__':
w.setWindowTitle('pyqtgraph example: ROI Examples')
vb=w.addViewBox(row=1, col=0, lockAspect=True,invertY=False)
vb.enableAutoRange(enable=False)
try:
g=pg.GridItem(pen=(0, 255, 0), textPen=(0, 255, 0)) # green grid and labels
except: