I'd like to be able to find all of the TextItems in a PlotWidget automatically.
I'm trying to write some resize code that will automatically change the font size of TextItems as my app's MainWindows resizes.
For my other widgets and for the PlotWidget, I use findChildren a lot :
def resizeEvent(self, event):
# figure out scale factor
sfh = float(self.centralWidget().height())/float(self.centralWidget().minimumHeight())
sfw = float(self.centralWidget().width())/float(self.centralWidget().minimumWidth())
sf = min(sfh,sfw)
font = QFont("Tahoma", 10.) # Tahoma seems to work well on old XP boxes
font.setPointSizeF(sf*10.)
for widget in self.findChildren((QtWidgets.QLineEdit, QtWidgets.QTextEdit
QtWidgets.QLabel )):
widget.setFont(font)
for widget in self.findChildren((PlotWidget)):
fs = int(10.*sf)
labelStyle = {'font-size': str(fs) + 'pt'}
widget.setLabel('left', **labelStyle)
widget.setLabel('bottom', **labelStyle)
widget.getAxis("left").tickFont = font
widget.getAxis("left").setStyle(tickTextOffset = fs)
widget.getAxis("bottom").tickFont = font
widget.getAxis("bottom").setStyle(tickTextOffset = fs)
widget.getAxis("left").setWidth(fs*10)
However, I cannot figure out how to find TextItems, I tried adding pyqtgraph.TextItem and QtWidgets.QGraphicsTextItem to my tuple of widgets in self.findChildren, but neither worked.
I also tried search in self.plotMain (my PlotWidget):
for widget in self.plotMain.findChildren((pyqtgraph.TextItem, QtWidgets.QGraphicsTextItem )):
widget.setFont(font)
but that didn't work either.
I also tried playing with listDataItems, but no joy.