Source code for pyqtgraph.widgets.VerticalLabel
import warnings
from ..Qt import QtCore, QtGui, QtWidgets
__all__ = ['VerticalLabel']
#class VerticalLabel(QtWidgets.QLabel):
#def paintEvent(self, ev):
#p = QtGui.QPainter(self)
#p.rotate(-90)
#self.hint = p.drawText(QtCore.QRect(-self.height(), 0, self.height(), self.width()), QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignVCenter, self.text())
#p.end()
#self.setMinimumWidth(self.hint.height())
#self.setMinimumHeight(self.hint.width())
#def sizeHint(self):
#if hasattr(self, 'hint'):
#return QtCore.QSize(self.hint.height(), self.hint.width())
#else:
#return QtCore.QSize(16, 50)
[docs]
class VerticalLabel(QtWidgets.QLabel):
[docs]
def __init__(self, text, orientation='vertical', forceWidth=True):
QtWidgets.QLabel.__init__(self, text)
self.forceWidth = forceWidth
self.orientation = None
self.setOrientation(orientation)
def setOrientation(self, o):
if self.orientation == o:
return
self.orientation = o
self.update()
self.updateGeometry()
def paintEvent(self, ev):
p = QtGui.QPainter(self)
#p.setBrush(QtGui.QBrush(QtGui.QColor(100, 100, 200)))
#p.setPen(QtGui.QPen(QtGui.QColor(50, 50, 100)))
#p.drawRect(self.rect().adjusted(0, 0, -1, -1))
#p.setPen(QtGui.QPen(QtGui.QColor(255, 255, 255)))
if self.orientation == 'vertical':
p.rotate(-90)
rgn = QtCore.QRect(-self.height(), 0, self.height(), self.width())
else:
rgn = self.contentsRect()
align = self.alignment()
#align = QtCore.Qt.AlignmentFlag.AlignTop|QtCore.Qt.AlignmentFlag.AlignHCenter
with warnings.catch_warnings():
warnings.simplefilter("ignore")
self.hint = p.drawText(rgn, align, self.text())
p.end()
if self.orientation == 'vertical':
self.setMaximumWidth(self.hint.height())
self.setMinimumWidth(0)
self.setMaximumHeight(16777215)
if self.forceWidth:
self.setMinimumHeight(self.hint.width())
else:
self.setMinimumHeight(0)
else:
self.setMaximumHeight(self.hint.height())
self.setMinimumHeight(0)
self.setMaximumWidth(16777215)
if self.forceWidth:
self.setMinimumWidth(self.hint.width())
else:
self.setMinimumWidth(0)
def sizeHint(self):
if self.orientation == 'vertical':
if hasattr(self, 'hint'):
return QtCore.QSize(self.hint.height(), self.hint.width())
else:
return QtCore.QSize(19, 50)
else:
if hasattr(self, 'hint'):
return QtCore.QSize(self.hint.width(), self.hint.height())
else:
return QtCore.QSize(50, 19)